如何在JSF中更新“呈现”属性

时间:2015-05-11 13:58:16

标签: ajax jsf primefaces facelets

我有一份文件清单,我需要立即更新所有文件。 我做了这样的事情:

<ui:repeat id="r_list" value="#{tareaController.controlador.documentosIndexar}" var="documentos" >

其中documentosIndexar是文档列表。它显示所有文档及其属性。 我有两个panelGrid,一个是文档的查看者,另一个是信息。 在信息的底部有文件清单。

我需要填写文档的信息,然后选择另一个,而不会丢失前一个。 我正在尝试更新整个ui:repeat,它会渲染下一个文档及其信息,但前一个文档的信息会丢失。 我也尝试过:

<ui:repeat id="r_list">
 <p:panelGrid id="pg_document" rendered="#{tareaController.controlador.documentoSeleccionado.id eq documentos.id}">
 <---- Document components here ---->
 <p:ajax event="rowSelect" update=":f_tarea:r_list:pg_document" listener="#{tareaController.controlador.reemplazarLista(tareaController.documentoSeleccionado)}"/>
</p:panelGrid>
</ui:repeat>

我的所有组件,以及我的页面都位于名为f_tarea的表单中,该表单来自其模板。 当我执行上述操作时,我会从列表中更新panelGrid,但只更新那个,并且渲染条件中的变量已更改,因此所有panelGrid消失。 基本上,我想要做的就是更新ui:repeat中所有panelGrids上的渲染条件,这样就会隐藏另一个,而不会丢失上一个信息。

1 个答案:

答案 0 :(得分:1)

确定。对不起,我是一个完全愚蠢的人。 我尝试过以前做过的事情:下载PrimeFaces手册。在AjaxBehavior部分,有&#34;进程&#34;在部分请求中处理组件的一个。 我只是通过这样做来解决它:

<p:ajax event="rowSelect" process=":f_tarea:r_list:pg_documento" update=":f_tarea:pg_doc" listener="#{tareaController.controlador.reemplazarLista(tareaController.documentoSeleccionado)}"/>

我不会删除这个问题,以防将来帮助某人。