启用选择时 DataModel 必须实现 org.primefaces.model.SelectableDataModel 或者您需要定义 rowKey 属性
DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute
我在选择单行时遇到了这个异常:
javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute
这里是 table:
<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
型号 class:
public class Book implements Serializable {
@Id
@GeneratedValue
private Integer id;
@Column(nullable = false)
private String title;
//...
我在数据table
中定义了rowKey
和Selection
和selectionMode
我不知道为什么会出现此错误?!
id
应该是 String
而不是 Integer
吗?
您的行键(再次)定义错误。它应该是 #{book.id}
,如 PrimeFaces 展示中所示。不确定这是唯一的错误,但遇到这个错误时我停止了进一步阅读。
请自行多调查。 Whosebug 不是免费的培训或咨询网站
我在选择单行时遇到了这个异常:
javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute
这里是 table:
<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
型号 class:
public class Book implements Serializable {
@Id
@GeneratedValue
private Integer id;
@Column(nullable = false)
private String title;
//...
我在数据table
中定义了rowKey
和Selection
和selectionMode
我不知道为什么会出现此错误?!
id
应该是 String
而不是 Integer
吗?
您的行键(再次)定义错误。它应该是 #{book.id}
,如 PrimeFaces 展示中所示。不确定这是唯一的错误,但遇到这个错误时我停止了进一步阅读。
请自行多调查。 Whosebug 不是免费的培训或咨询网站