我正在尝试在 Primefaces 中显示书籍列表p:dataTable
。桌子上的书没问题。但是,排序不起作用- 当我单击列标题时,没有任何反应,标题保持按下状态。
我错过了一些东西 - 不知道它是什么(试图弄清楚一段时间并浏览过类似的问题)。我将这些用于应用程序:Primefaces 7、Java EE 8、Glassfish 5.1、Netbeans 12.0、JDK 1.8.0_271、Windows 7 和 Chrome 浏览器 v87.0。
Web 应用程序有两个 bean 和一个 JSF 页面。
豆类:
public class Book implements Serializable {
private String title;
private String author;
public Book() {
}
public Book(String s1, String s2) {
title = s1; author = s2;
}
// get, set methods
}
@Named
@ViewScoped
public class BooksView implements java.io.Serializable {
private List<Book> books;
private List<Book> getBooksList() {
List<Book> list = new ArrayList<>();
list.add(new Book("Tom Sawyer", "Mark Twain"));
list.add(new Book("Animal Farm", "George Orwell"));
list.add(new Book("White Fang", "Jack London"));
list.add(new Book("Dubliners ", "James Joyce"));
return list;
}
@PostConstruct
public void init() {
books = getBooksList();
}
public List<Book> getBooks() {
if (books == null || books.isEmpty()) {
books = getBooksList();
}
return books;
}
}
JSF 页面(标签内的h:body
标记):
<h:form>
<p:dataTable var="bk" value="#{booksView.books}">
<f:facet name="header">
List of Books
</f:facet>
<p:column headerText="Title" sortBy="#{bk.title}" >
<h:outputText value="#{bk.title}" />
</p:column>
<p:column headerText="Author" sortBy="#{bk.author}" >
<h:outputText value="#{bk.author}" />
</p:column>
</p:dataTable>
</h:form>