【问题标题】:JSF + PrimeFaces: `update` attribute does not update componentJSF + PrimeFaces:`update` 属性不更新组件
【发布时间】: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 周围,那么它就可以工作了。这是为什么呢?

【问题讨论】:

标签: jsf jsf-2 primefaces


【解决方案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之前的渲染属性中是什么意思?上一级?
猜你喜欢
  • 2013-01-11
  • 2012-07-26
  • 2016-09-27
  • 2013-06-04
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
相关资源
最近更新 更多