4

我在 ManagedBean 中有以下内容

private Employee selectedEmployee; // with getter and setter    

public void onRowSelect(SelectEvent event) {

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

}

我的问题出在EmployeeEntity 类中,如果我employeeNumberStringto 开始Long,我在ManagedBeanselectedEmployee的方法中得到 nullonRowSelect

员工实体

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" />
4

2 回答 2

5
  1. 您必须在rowKey字段中有一个有效的主键。
  2. 您必须将 包含在dataTable表单中。

否则返回集合(空)。

于 2014-10-28T11:15:59.743 回答
4

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

rowKey="#{emp.employeeNumber}"

我不知道这与 String 一起使用的实际原因。也许那是你toString()方法的一部分?

于 2013-03-06T14:48:15.210 回答