从JSF ajax调用更新数据表

时间:2012-03-01 17:10:00

标签: primefaces

我正在使用PF 3.1.1,JSF 2.0。

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

我在selectBooleanCheckBox上进行ajax调用,它会更新backing 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>  

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

复选框/单选按钮选择方法对您不起作用吗?查看该功能的展示演示: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>

试一试,看看它是怎么回事。