启用选择或需要定义rowKey属性时,DataModel必须实现org.primefaces.model.SelectableDataModel

时间:2015-05-02 22:27:23

标签: jsf primefaces datatable

我在选择单行时遇到此异常:

<h:form>
    <p:dataTable id="books" value="#{myCardBean.booksList}" var="book" selectionMode="single"
                 selection="#{myCardBean.selectedBook}" rowKey="book.id">

        <p:ajax event="rowSelect" listener="#{myCardBean.onRowSelect}"/>
        <p:ajax event="rowUnselect" listener="#{myCardBean.onRowUnselect}"/>

        <p:column>
            <f:facet name="header">Book ID</f:facet>
            <h:outputText value="#{book.id}"/>
        </p:column>
        <p:column>
            <f:facet name="header">Title</f:facet>
            <h:outputText value="#{book.title}"/>
        </p:column>
    </p:dataTable>
</h:form>

这是表格:

myCardBean

这是@ManagedBean @ViewScoped @Component public class MyCardBean implements Serializable { @Autowired private BookDao bookDao; private List<Book> booksList; private Book selectedBook; @PostConstruct public void init() { userCard(); } @Transactional public List<Book> userCard() { booksList = bookDao.findAllBooks(); System.out.println("all Books size: " + booksList.size() + " books list type: " + booksList); // 3 , list of Object return booksList; } public void onRowSelect(SelectEvent event) { System.out.println("row selected, " + event.getObject()); } public void onRowUnselect(UnselectEvent event) { } //getter/setter for selectedBook and bookList

Book

这是public class Book implements Serializable { @Id @GeneratedValue private Integer id; @Column(nullable = false) private String title; //... 模型类:

rowKey

我在数据表中定义了SelectionselectionMode以及id

我不知道为什么我会收到这个错误?!

String应该Integer而不是{{1}}吗?

1 个答案:

答案 0 :(得分:1)

您的rowkey(再次)定义错误。它应该是#{book.id},可以在PrimeFaces展示中看到。不确定这是唯一的错误,但是当我遇到这个时,我停止了阅读。

请自己调查一下。 StackOverflow不是免费的培训或咨询网站