JSF + Primefaces:带有ajax的"渲染"组件的问题

Tha*_*ham 4 java jsf primefaces

EDIT
Cant似乎可以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>
Run Code Online (Sandbox Code Playgroud)

renderComment是一个布尔属性bean.setRenderComment基本状态切换的renderComment这样

this.renderComment = !this.renderComment;
Run Code Online (Sandbox Code Playgroud)

是的,每次我点击链接时Hey,我都需要刷新以hello开启或关闭渲染.我该如何解决它,以便我不需要刷新

Rom*_*las 13

我没有在我的项目中使用Primefaces而是使用Richfaces.所以我并不知道Primefaces如何完成刷新过程.但是,我有一个可以轻松测试的想法.

您的问题可能是由于在HTML页面上找不到重新呈现(即更新)的组件.如果您的rendered属性等于false,则<SPAN>with commentid 不会集成在生成的HTML页面中.因此,当在客户端收到Ajax请求时,Ajax引擎无法刷新<SPAN>它,因为找不到它.

因此,您可以做的是始终渲染您panelGrouprendered属性并将其移动到<h:outputText>包含Hello消息的嵌套.

这是我的建议:

<h:panelGroup id="comment">
    <h:outputText value="Hello" rendered="#{bean.renderComment}"/>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

这样,在Ajax调用之后,panelGroup将始终刷新,并且它将包含或不包含Hello消息,关于renderCommentbean 的属性值.