2

この問題の別のケースがあります。つまり、基本エンティティを拡張するモデルがあり、その基本エンティティにはプロパティ ID があります。そのIDをrowKeyとして使用しましたが、このエラーがスローされます。モデル(抽象ベースではない)の任意のプロパティにrowKeyの値を設定すると、データテーブルが機能します。

私はJavaEE6に取り組んでいることに注意してください。

モデル:

@Entity
@SequenceGenerator(name = "ID_GENERATOR", sequenceName = "USER_ADDRESS_SEQ")
public class UserAddress extends BaseEntity { //.. }

@MappedSuperclass
public abstract class BaseEntity implements Serializable, IEntity {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(generator = "ID_GENERATOR")
    @Column(name = "ID")
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    } ..

JavaEE6 Bean:

@Stateless
@Named
public class UserAddressBean implements Serializable {
    private static final long serialVersionUID = -6104153017102665096L; 

    private List<UserAddress> addresses;
    private UserAddress address;

    public List<UserAddress> getAddresses() {
        addresses = new ArrayList<UserAddress>();
        UserAddress temp = new UserAddress();
        temp.setDescription("test");
        addresses.add(temp);

        temp = new UserAddress();
        temp.setDescription("test");
        addresses.add(temp);

        return addresses;
    }

    public UserAddress getAddress() {
        return address;
    }

    public void setAddress(UserAddress address) {
        this.address = address;
    }..

そしてxhtmlページ:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/shared/page/_oneColumn.xhtml">
    <ui:define name="content">
        <h:form id="form">
            <p:panel>
                <f:facet name="header"></f:facet>
                <p:dataTable id="addresses" var="address"
                    value="#{userAddressBean.addresses}" rowKey="#{address.id}"
                    selection="#{userAddressBean.address}" selectionMode="single">
                    <p:column headerText="#{msg['field.description']}">
                        <h:outputText value="#{address.description}" />
                    </p:column>
                </p:dataTable>
                <f:facet name="footer"></f:facet>
            </p:panel>
        </h:form>
    </ui:define>
</ui:composition>

問題のアイデアはありますか?

ありがとう、
ツェツヤ

4

1 に答える 1

12

申し訳ありませんが、私はとても愚かでした。問題は id が null でした。値をハードコーディングしたことを忘れていました。とにかく、同じ問題に遭遇する将来の人々のために、より少ないコードの行キーを利用するには、次のデータテーブル プロパティが設定されていることを確認してください: 1.) 行キー 2.) 選択 3.) 選択モード

また、rowKey プロパティが null でないことを確認してください。

于 2012-10-24T01:58:02.490 に答える