Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当变量声明为Long时,所选行为null_Java_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Java 当变量声明为Long时,所选行为null

Java 当变量声明为Long时,所选行为null,java,jsf,jsf-2,primefaces,Java,Jsf,Jsf 2,Primefaces,我在ManagedBean中有以下内容 private Employee selectedEmployee; // with getter and setter public void onRowSelect(SelectEvent event) { System.out.println("selected employee "+selectedEmployee.getEmployeeNumber()); } 我的问题是在EmployeeEntity类中,如果我将employee

我在ManagedBean中有以下内容

private Employee selectedEmployee; // with getter and setter    

public void onRowSelect(SelectEvent event) {

System.out.println("selected employee "+selectedEmployee.getEmployeeNumber());

}
我的问题是在
Employee
Entity类中,如果我将
employeeNumber
String
设置为
Long
,则在
onRowSelect
ManagedBean方法中的
selectedEmployee
将为null

员工实体

private String employeeNumber; // this works  

private Long employeeNumber; // this doesn't work
这可能是什么原因

用于选择的JSF代码

    <p:dataTable id="dataTable" var="emp" lazy="true"
value="#{myMB.lazyModel}" styleClass="userDataTableStyle"
paginator="true" paginatorPosition="bottom" rows="5"
selection="#{myMB.selectedEmployee}">

    <p:ajax event="rowSelectRadio" listener="#{myMB.onRowSelect}"
update=":myform:details" />

数据表中使用选择时
应提供
行键
属性,用于查找列表中选定的实际对象。该属性对于列表中的所有数据都是唯一的(可能是数据库中的主键):

我不知道为什么这对字符串有效。也许这是您的
toString()
方法的一部分

  • rowKey
    字段中必须有有效的主键
  • 必须将
    数据表
    包含到表单中

  • Else返回集(null)。

    使用选择时,您应该在数据表中提供
    rowKey
    属性。尝试添加
    rowKey=“#{emp.employeeNumber}”
    或其他一些独特的字段,看看发生了什么。@partlov我已经将
    rowKey=“#{emp.employeeNumber}”
    添加到
    而不是
    p:ajax
    ,该属性在那里不存在。添加到
    p:dataTable
    @partlov Yes添加到
    p:dataTable
    解决了问题。当
    employeeNumber
    是字符串时,为什么会起作用?如果你能补充一点,我很乐意接受。非常感谢。这不是“tostring()”>的一部分,您必须将dataTable包含到一个表单中,以实现此目的,谢谢!
    rowKey="#{emp.employeeNumber}"