我在ManagedBean中有以下内容

private Employee selectedEmployee; // with getter and setter

public void onRowSelect(SelectEvent event) {

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

}

我的问题是在Employee实体类中,如果我将employeeNumberString转换为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()方法的一部分?

07-27 13:21