我在ManagedBean中有以下内容
private Employee selectedEmployee; // with getter and setter
public void onRowSelect(SelectEvent event) {
System.out.println("selected employee "+selectedEmployee.getEmployeeNumber());
}
我的问题是在
Employee
实体类中,如果我将employeeNumber
从String
转换为Long
,那么ManagedBean的selectedEmployee
方法中的onRowSelect
将为空员工实体类
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" />
最佳答案
在dataTable
中使用选择时,应提供rowKey
属性,该属性将用于查找在列表中选择的实际对象。该属性应该是列表中所有数据唯一的属性(可能是数据库的主键):
rowKey="#{emp.employeeNumber}"
我不知道使用String的实际原因。也许那是您的
toString()
方法的一部分?