4

ManagedBeanには次のものがあります

private Employee selectedEmployee; // with getter and setter    

public void onRowSelect(SelectEvent event) {

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

}

私の問題は、からをEmployee作成した場合のエンティティクラスにあり、ManagedBeanのメソッドでnullを取得していますemployeeNumberStringLongselectedEmployeeonRowSelect

従業員エンティティクラス

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

4

選択を使用する場合、リストで選択されている実際のオブジェクトを見つけるために使用される属性をdataTable提供する必要があります。rowKeyこれは、リスト内のすべてのデータに対して一意のプロパティである必要があります (おそらくデータベースの主キー):

rowKey="#{emp.employeeNumber}"

これが文字列で機能した実際の理由はわかりません。多分それはあなたのtoString()方法の一部でしたか?

于 2013-03-06T14:48:15.210 に答える