编辑
似乎无法让 renderedupdate 属性一起正常工作。这是我的代码

        <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>
renderCommentbean 中的一个 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 属性的值。

10-06 13:30