编辑
似乎无法让 rendered
与 update
属性一起正常工作。这是我的代码
<ui:define name="left">
<h:form>
<p:commandLink value="Hey"
actionListener="#{bean.setRenderComment}"
update="comment"/>
</h:form>
</ui:define>
<ui:define name="right">
<h:panelGroup id="comment" rendered="#{bean.renderComment}">
hello
</h:panelGroup>
</ui:define>
renderComment
是 bean
中的一个 boolean 属性。 setRenderComment
基本上像这样切换 renderComment
的状态this.renderComment = !this.renderComment;
是的,每次我点击链接
Hey
时,我都需要刷新以打开或关闭渲染 hello
。我该如何修复它,这样我就不需要刷新了 最佳答案
我在我的项目中使用的不是 Primefaces,而是 Richfaces。所以我不太清楚 Primefaces 是如何完成刷新过程的。但是,我有一个可以轻松测试的想法。
您的问题可能是由于在 HTML 页面上找不到要重新渲染(即更新)的组件。如果您的 rendered
属性等于 false
,那么带有 <SPAN>
id 的 comment
是 而不是 集成在生成的 HTML 页面中。因此,当客户端收到 Ajax 请求时,Ajax 引擎无法刷新此 <SPAN>
,因为它没有找到。
因此,您可以做的是始终呈现您的 panelGroup
并将您的 rendered
属性移动到包含 Hello 消息的嵌套 <h:outputText>
中。
这是我的建议:
<h:panelGroup id="comment">
<h:outputText value="Hello" rendered="#{bean.renderComment}"/>
</h:panelGroup>
这样,在 Ajax 调用之后,panelGroup 将始终被刷新,并且它是否包含 Hello 消息,取决于 bean 的
renderComment
属性的值。