如何在 JSF 中更新 "rendered" 属性

How to just update "rendered" property in JSF

我有一份文件清单,我需要一次全部更新。 我做了这样的事情:

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

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

我需要填写文档的信息,然后 select 在不丢失前一个的情况下再填写一个。 我正在尝试更新整个 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 的渲染条件,这样一个隐藏另一个显示而不会丢失前一个的信息。

好的。对不起,我是一个完全愚蠢的人。 我尝试做一些以前没有做过的事情:下载 PrimeFaces 手册。在 AjaxBehavior 部分,有 "process" 部分处理部分请求中的组件。 我只是通过这样做来修复它:

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

我不会删除这个问题,以防它对以后的人有帮助。