编辑
似乎无法得到 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. setRenderComment 基本上切换 renderComment 像这样

this.renderComment = !this.renderComment;

是的,每次我单击链接时 Hey, ,我需要刷新以渲染 hello 打开或关闭。我该如何修复它,这样我就不需要刷新

有帮助吗?

解决方案

我不是在项目上使用PrimeFaces,而是在项目上使用Richfaces。因此,我并不真正知道PrimeFaces如何完成刷新过程。但是,我有一个可以轻松测试的想法。

你的问题 可能 由于要重新渲染的组件以下事实(即 更新)在HTML页面上找不到。如果你的 rendered 属性等于 false, ,然后 <SPAN>comment id是 不是 集成在生成的HTML页面中。因此,当在客户端收到AJAX请求时,Ajax引擎将无法刷新此 <SPAN> 由于找不到。

所以你能做的就是始终渲染 panelGroup 并移动你的 rendered 属于嵌套 <h:outputText> 其中包含 你好 信息。

这是我的建议:

<h:panelGroup id="comment">
    <h:outputText value="Hello" rendered="#{bean.renderComment}"/>
</h:panelGroup>

这样,在AJAX调用后,小组组将始终刷新,它将包含 你好 有关是否有关消息的价值 renderComment 豆的属性。

其他提示

由于具有ID的组件 comment 不是表格之一(一个 UINamingContainer 组件)儿童,您需要将ID前缀 : 指示JSF从“上层”扫描。

这应该做:

<p:commandLink value="Hey"
    actionListener="#{bean.setRenderComment}"
    update=":comment" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top