我在ManagedBean中有以下内容
private Employee selectedEmployee; // with getter and setter
public void onRowSelect(SelectEvent event) {
System.out.println("selected employee "+selectedEmployee.getEmployeeNumber());
}
我的问题出在Employee
实体类中,如果我从employeeNumber
到String
Long
,我selectedEmployee
onRowSelect
的空格为private String employeeNumber; // this works
private Long employeeNumber; // this doesn't work
ManagedBean的方法
员工实体类
<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" />
这可能是什么原因?
JSF代码选择
{{1}}
答案 0 :(得分:5)
rowKey
字段中拥有有效的主键。dataTable
添加到表单中。Else return set(null)。
答案 1 :(得分:4)
在dataTable
中使用选择时,您应提供rowKey
属性,该属性将用于查找列表中所选的实际对象。这应该是列表中所有数据唯一的属性(可能是数据库中的主键):
rowKey="#{emp.employeeNumber}"
我不知道为什么这适用于String。也许这是你toString()
方法的一部分?