java - 在 primefaces 数据表中选择行

标签 java jsf primefaces datatable

我有这张表:

enter image description here

<h:form>
    <p:dataTable id="books" value="#{ordersBean.userOrders}" var="book" selection="#{ordersBean.selectedBook}">
        <p:column>
            <f:facet name="header">Order ID</f:facet>
            <h:outputText value="#{book[0]}"/>
        </p:column>
        <p:column>
            <f:facet name="header">Title</f:facet>
            <h:outputText value="#{book[1]}"/>
        </p:column>
        <p:column>
            <f:facet name="header"></f:facet>
            <p:commandButton id="selectRowBtn" value="select" action="#{ordersBean.showSelectedBook}"/>
        </p:column>
    </p:dataTable>
</h:form>

我希望当我点击每个 select 按钮时,它是分配给 selectedBook 属性的行信息,并在 showSelectedBook() 方法中显示它:

这是ordersBean:

private Book selectedBook = new Book();

public Book getSelectedBook() {
    return selectedBook;
}

public void setSelectedBook(Book selectedBook) {
    this.selectedBook = selectedBook;
}

public void showSelectedBook() {
    System.out.println("In selected Book(), book: " + getSelectedBook());
}

但结果是这样的:

在选定的 Book() 中,book: null

最佳答案

应该是这样的:

XML代码:

<p:commandButton id="selectRowBtn" value="select" 
    action="#{ordersBean.showSelectedBook}">
    <f:param name="bookId" value="#{book[0]}" />
</p:commandButton>

Java bean 方法:

public void showSelectedBook() {

    Map<String,String> params = 
        FacesContext.getExternalContext().getRequestParameterMap();

    int bookId = Integer.valueOf(params.get("bookId"));

    for(Book book : bookList){
        if(book.bookId == bookId){
            selectedBook = book;
            break;
        }
    }

    System.out.println("In selected Book(), book: " + getSelectedBook());
}

此外,您必须了解将参数发送到操作的模式,请参阅下面的链接。 http://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/

关于java - 在 primefaces 数据表中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29965835/

相关文章:

java - 为什么我的控制台中会出现此错误?

java - 如何使用默认区域解析 ZonedDateTime?

java - 获取Java泛型的类,以及泛型的接口(interface)实现

java - 如何在 Java 中存储文本文件字符串以供以后使用

JSF 2 - ResponseWriter.flush() 的意义

java - Primefaces 数据表出现奇怪错误

java - 避免 JavaFX 中跨类的静态

java - 在 View 中发现重复的组件 ID

java.lang.IllegalArgumentException : Illegal view ID in JSF 异常

javascript - 当我点击 Primefaces 上的重置按钮时,如何将焦点设置在 inputText 上