当变量声明为Long时,Primefaces选中的行为null

时间:2013-03-06 10:47:04

标签: 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());

}

我的问题出在Employee实体类中,如果我从employeeNumberString 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}}

2 个答案:

答案 0 :(得分:5)

  1. 您必须在rowKey字段中拥有有效的主键。
  2. 您必须将dataTable添加到表单中。
  3. Else return set(null)。

答案 1 :(得分:4)

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

rowKey="#{emp.employeeNumber}"

我不知道为什么这适用于String。也许这是你toString()方法的一部分?