JSF + PrimeFaces:`update` 属性不更新组件

Posted

技术标签:

【中文标题】JSF + PrimeFaces:`update` 属性不更新组件【英文标题】:JSF + PrimeFaces: `update` attribute does not update component 【发布时间】:2011-06-02 04:07:57 【问题描述】:

这是我的布局

<div id="mainPanel">
   <div id="padding">
       <h:outputText id="text" value="Personal Feed" rendered="#Profile.renderComment"/>
   </div>
   <div id="right">
       <h:form>
           <p:commandButton value="Update" actionListener="#bean.toggleComment" update="text" />
       </h:form>
   </div>
</div>

当我单击链接 Update 时,它应该打开和关闭 renderComment 布尔值,它不会切换文本 Personal Feed 的显示。现在,如果我在h:outputTextupdate 周围放置一个表格,而不是在form 周围,那么它就可以工作了。这是为什么呢?

【问题讨论】:

在这里查看我的答案;相关:***.com/a/53015102/1599699 【参考方案1】:

update 属性应指向 html DOM 树中的现有客户端 ID。但是,由于该元素在 HTML DOM 树中不可用,因为它不是由服务器端呈现的,所以 JS/ajax 在 HTML DOM 树中找不到任何要更新的内容。

事实上,您应该将它包装在另一个元素中,该元素在 HTML DOM 树中始终可用,以便 Ajax 可以找到它,然后在 update 中使用它的客户端 ID。在您的情况下,您可以为此使用padding

<div id="mainPanel">
   <h:panelGroup id="padding" layout="block">
       <h:outputText id="text" value="Personal Feed" rendered="#Profile.renderComment"/>
   </h:panelGroup>
   <div id="right">
       <h:form>
           <p:commandButton value="Update" actionListener="#bean.toggleComment" update=":padding" />
       </h:form>
   </div>
</div>

【讨论】:

BaluC,:padding之前的渲染属性中是什么意思?上一级?

以上是关于JSF + PrimeFaces:`update` 属性不更新组件的主要内容,如果未能解决你的问题,请参考以下文章

将数据从对话框添加到datable-jsf-primefaces

JSF 2 PrimeFaces 安装

在 PrimeFaces 中添加 Angular Js - JSF

JSF 页面元素无法从具有动作属性的支持 bean 触发方法。(JSF2.0 + primefaces)

与 primefaces 集成时无法加载 jsf.page

JSF 2.0 无法从 primefaces 呈现对话框