简体   繁体   English

javax.faces.FacesException:启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel

[英]javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled

I have another case for this issue which is, I have a model that extends a base entity and that base entity has property id. 我有另一个案例就是这个问题,我有一个模型,它扩展了一个基本实体,并且该基本实体具有属性id。 I've use that id as the rowKey and it throws this error. 我使用该id作为rowKey,它会抛出此错误。 When I set rowKey's value to any property from the model (not the abstract base) the datatable works. 当我将rowKey的值设置为模型(而不是抽象基础)中的任何属性时,数据表工作。

Note that I'm working on JavaEE6. 请注意,我正在使用JavaEE6。

The models: 型号:

@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;
    } ..

The JavaEE6 bean: 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;
    }..

And the xhtml page: 和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>

Any idea for the problem? 对这个问题有什么想法吗?

Thanks, 谢谢,
czetsuya czetsuya

Oh sorry, I was so stupid, the problem was id is null. 哦对不起,我是如此愚蠢,问题是id为null。 I forgot that I hard coded the values. 我忘记了我对这些值进行了硬编码。 So anyway for the future people who would encounter the same issue, to make use of the less code row key make sure that you have the following datatable properties set: 1.) rowKey 2.) selection 3.) selectionMode 所以无论如何,对于将要遇到相同问题的未来人来说,要使用较少的代码行密钥,请确保设置了以下数据表属性:1。)rowKey 2.)选择3.)selectionMode

Also make sure that the rowKey property is not null. 还要确保rowKey属性不为null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 javax.faces.FacesException:启用选择或定义rowKey属性时,DataModel必须实现org.primefaces.model.SelectableDataModel - javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or define rowKey attribute 启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel,但我已经定义了rowKey - DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled, but I have already defined rowKey 启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel。 - DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled. 启用选择功能或您需要定义rowKey属性时,DataModel必须实现org.primefaces.model.SelectableDataModel - DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute 启用选择时,DataModel 必须实现 org.primefaces.model.SelectableDataModel - DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled Primefaces:向数据表添加新行会导致错误:启用选择后,DataModel必须实现org.primefaces.model.SelectableDataModel - Primefaces: Add a new row to datatable gives error: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled DataModel必须使用primefaces过滤器实现org.primefaces.model.SelectableDataModel异常 - DataModel must implement org.primefaces.model.SelectableDataModel exception using primefaces filter javax.faces.FacesException:目标模型Type不是Collection或Array - javax.faces.FacesException: Target model Type is no a Collection or Array javax.faces.FacesException,当用户点击返回时 - javax.faces.FacesException, when user hits return 启用选择时,必须实现数据模型。 - datamodel must implement when selection is enabled.?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM