Java 当变量声明为Long时,所选行为null
我在ManagedBean中有以下内容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
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}"