0

Primefacesドキュメントによると、選択は配列である必要があります。以下のコードでは、bean.selectedUsersは「HasUsersVO [] selectedUsers」として定義されていますが、datatableの値はListです。データテーブルがいっぱいになった後で[OK]ボタンをクリックすると、下部に貼り付けられたキャストエラーが発生します。

                <p:dataTable id="userListTable" value="#{bean.peopleVOList}"
                    var="user" rowClasses="odd even" selection="#{bean.selectedUsers}" rowKey="#{user.userGuid}"
                    <p:column selectionMode="multiple" style="width:18px">
                    </p:column>
.....
.....
</p:dataTable>

エラー

22:59:16,962 INFO  [class com.zreflect.emyed.managedbean.circle.CircleController] (http--127.0.0.1-8080-3) *******************Outside getUsersList********************
22:59:38,943 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http--127.0.0.1-8080-3) [Lcom.user.PeopleVO; cannot be cast to java.util.Collection: java.lang.ClassCastException: [Lcom.user.PeopleVO; cannot be cast to java.util.Collection
    at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:835) [primefaces-3.3.1.jar:]
    at org.primefaces.component.datatable.DataHelper.decodeMultipleSelection(DataHelper.java:262) [primefaces-3.3.1.jar:]
    at org.primefaces.component.datatable.DataHelper.decodeSelection(DataHelper.java:240) [primefaces-3.3.1.jar:]
    at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:72) [primefaces-3.3.1.jar:]
4

1 に答える 1

5

例外メッセージとスタックトレースは、のPeopleVO[]後ろに配列を指定したことを示しています#{bean.peopleVOList}。これは正しくないです。Collection、できれば。でなければなりませんArrayList<PeopleVO>

private List<PeopleVO> peopleVOList;

#{bean.selectedUsers}確かにでなければなりませんPeopleVO[]。その部分は大丈夫です。

于 2012-08-06T11:17:24.187 に答える