【问题标题】:How to just update "rendered" property in JSF如何只更新 JSF 中的“渲染”属性
【发布时间】:2015-07-22 01:47:18
【问题描述】:

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

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

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

我需要填写文档的信息,然后选择另一个而不丢失前一个。 我正在尝试更新整个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 上的渲染条件,因此一个隐藏,另一个显示,而不会丢失之前的信息。

【问题讨论】:

    标签: ajax jsf primefaces facelets


    【解决方案1】:

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

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

    我不会删除该问题,以防将来对某人有所帮助。

    【讨论】:

    • 另外,您可以将 ui:repeat 包装在单个 h:panelGroup 中并重新渲染该单个组件。
    • 是的,我认为我很难解释这一点。这是第一个案例,也是对我有用的案例。我只需要添加进程属性。
    猜你喜欢
    • 2011-09-09
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多