我有一份文件清单,我需要立即更新所有文件。 我做了这样的事情:
<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上的渲染条件,这样就会隐藏另一个,而不会丢失上一个信息。
答案 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)}"/>
我不会删除这个问题,以防将来帮助某人。