28

这是我的布局

<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 Feedh:outputText现在,如果我在, 而update不是周围放置一个表格form,那么它就可以工作了。这是为什么?

4

1 回答 1

64

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

实际上,您应该将它包装在 HTML DOM 树中始终可用的另一个元素中,以便 Ajax 可以找到它,然后在update. 在您的情况下,您可以使用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>
于 2011-01-01T13:58:56.233 回答