【发布时间】:2013-02-21 02:48:33
【问题描述】:
我在 ManagedBean 中有以下内容
private Employee selectedEmployee; // with getter and setter
public void onRowSelect(SelectEvent event) {
System.out.println("selected employee "+selectedEmployee.getEmployeeNumber());
}
如果我将employeeNumber 从String 变为Long,我的问题是在Employee 实体类中,我在ManagedBean 的onRowSelect 方法中得到selectedEmployee 的空值
员工实体类
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}"或其他一些独特的字段,看看发生了什么。 -
@partlov 我已将
rowKey="#{emp.employeeNumber}"添加到<p:ajax,但这并没有解决问题。 -
不是
p:ajax,那里不存在该属性。添加到p:dataTable。 -
@partlov 是的,添加到
p:dataTable解决了这个问题。为什么当employeeNumber是字符串时这会起作用?如果您可以添加作为答案,我将很乐意接受。非常感谢。
标签: java jsf jsf-2 primefaces