0

我正在尝试在 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>
4

0 回答 0