我有一个Session Managed Bean,我有一个我在datatable中显示的列表,当我点击按钮时,我更改了托管bean中的列表但是表格在JSF页面中没有改变:
<p:commandButton id="someId" value="Button" action="#{gestionduplanning.exec2()}">
<f:ajax render="koka"/>
</p:commandButton>
<p:dataTable id="koka" var="op" value="#{gestionduplanning.listop}" style="width: 700px;float: left;">
<p:column headerText ="operateur" style="width:50px;" >
<h:outputText value="#{op.operateur.matricule}"/>
</p:column>
</p:dataTable>
如何更新JSF中的表,我需要将托管bean作为会话bean保存?
答案 0 :(得分:3)
删除<f:ajax render="koka"/>
并将update="koka"
添加到<p:commandButton
<p:commandButton update="koka" id="someId" value="Button" action="#{gestionduplanning.exec2()}"/>
另外,最好不要将f:ajax
嵌套在Primefaces组件内,反之亦然......
f:ajax
旨在与原生JSF组件一起使用
p:ajax
适用于PrimeFaces组件
在一个页面中同时使用Primefaces组件和JSF本机组件是很好的,只需确保在Primefaces组件中使用p:ajax
并在JSF本机组件中使用f:ajax
答案 1 :(得分:1)
首先,您使用的是PrimeFaces,p:commandButton
已经是AJAX,因此您不需要f:ajax
:
<p:commandButton id="someId" value="Button" action="#{gestionduplanning.exec2()}" update="koka" />
其他事项,请确保您的数据源(getListop()
)已在exec2()
的bean中更新。