如何用会话bean刷新JSf中的数据表?

时间:2013-06-04 09:00:07

标签: jsf jsf-2 primefaces

我有一个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保存?

2 个答案:

答案 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中更新。