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:outputText
和update
周围放置一个表格,而不是在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
在 PrimeFaces 中添加 Angular Js - JSF