【问题标题】:updating datatable from JSF ajax call从 JSF ajax 调用更新数据表
【发布时间】:2012-03-01 17:10:00
【问题描述】:

我正在使用 PF 3.1.1、JSF 2.0。

我有一个带有 selectBooleanCheckBox 列的数据表。当用户选择我希望复选框被选中的行时,当用户选中复选框时,应该选中该行。

我正在对 selectBooleanCheckBox 进行 ajax 调用,它更新了支持 bean 中的 selectionArray,但结果未显示在屏幕上。

这里是代码-

<p:dataTable id="mylist" value="#{myController.selectedLists}"
                                         selection="#{myController.myArray}"
                                         selectionMode="multiple"
                                         var="item"
                                         rows="5"
                                         rowKey="#{item.id}"
                                         sortBy="#{item.name}"
                                         sortOrder="ascending"
                                         >
                                <p:ajax event="rowSelect" 
                                        listener="#{myController.onSelectList}"
                                        update="mylist"/>
                                <p:column style="width: 20px;" id="gs">
                                    <h:selectBooleanCheckbox id="booId"
                                                             value="#{item.booVal}">
                                        <f:ajax execute="@this"
                                                listener="#{myController.booValListener}"
                                                render="mylist"/>
                                        <f:attribute name="item" value="#{item}" />
                                    </h:selectBooleanCheckbox>
                                </p:column> </p:datatable>  

非常感谢任何帮助。

【问题讨论】:

    标签: primefaces


    【解决方案1】:

    复选框/单选按钮选择方法不适合您吗?查看该功能的展示演示:http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionRadioCheckbox.jsf

    现在解决您的问题:过去我在 ajax 请求后更新数据表时遇到过问题。除非他们从 primefaces 3.0 开始解决这个问题,否则无法直接更新数据表,您必须在其周围包裹一个 panelGroup 并更新 panelGroup。例如:

    <h:panelGroup id="panel">
         <p:dataTable id="mylist" value="#{myController.selectedLists}"
                                         selection="#{myController.myArray}"
                                         selectionMode="multiple"
                                         var="item"
                                         rows="5"
                                         rowKey="#{item.id}"
                                         sortBy="#{item.name}"
                                         sortOrder="ascending"
                                         >
               <p:ajax event="rowSelect" 
                                        listener="#{myController.onSelectList}"
                                        update="panel"/>
               ...
         </p:dataTable>
    </h:panelGroup>
    

    试试看效果如何。

    【讨论】:

    • 感谢您的建议,如果我在数据表中有 rowSelectListener 则复选框选择不起作用。这就是我使用 selectBooleanCheckbox 的原因。
    • 再次感谢。实际上,我试图从没有更新属性的 JSF 的 AJax 事件中更新数据表。我这样做是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多