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

Tha*_*ham 24 jsf primefaces jsf-2

这是我的布局

<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>
Run Code Online (Sandbox Code Playgroud)

当我单击链接时Update,它应该renderComment打开和关闭布尔值,它不会切换文本的显示Personal Feed.现在,如果我把一个表单周围h:outputText,并updateform相反,那么它的工作原理.这是为什么?

Bal*_*usC 60

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

实际上,您应该将它包装在HTML DOM树中始终可用的另一个元素中,以便Ajax可以找到它,然后使用其客户端ID 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>
Run Code Online (Sandbox Code Playgroud)

  • BaluC,`:` 在`padding` 之前的渲染属性中是什么意思?上一层? (2认同)

归档时间:

查看次数:

60942 次

最近记录:

8 年,5 月 前