ICEFaces上的JSF可见性推送更新 - 奇怪的行为

时间:2011-10-13 15:11:52

标签: java ajax jsf xhtml icefaces

我遇到了使用ICEFaces Push更新的JSF组件的条件呈现问题。

用例是我正在循环浏览目录中的图像,而在新图像上我正在调用ICEFaces Push Renderer,以便xhtml页面将获得更新的图像及其信息。图像显示在一个面板中,而其信息显示在另一个面板中。信息并不总是可以访问,当它不是 - 我想显示团队徽标而不是信息面板。这是xhtml代码:

<ice:graphicImage height="1024" width="768" value="#{viewBean.image}"></ice:graphicImage>
    <h:panelGrid border="0" columns="1">
        <c:choose>
            <c:when test="${viewBean.infoAccessible}">
                <h:panelGrid border="0" columns="2">


                    <h:outputText value="Data:"></h:outputText>
                    <h:outputText value="#{viewBean.info.time}"></h:outputText>

                </h:panelGrid>
            </c:when>

上面的代码和服务器端代码按预期工作,但有一个奇怪的副作用,我不明白。应该有一次viewBean.image调用,但它会递增...所以应用程序运行 - 当我删除viewBean.infoAccessible条件检查时,我最多会调用70多个调用此方法的方法,但情况并非如此。 / p>

...我也可以提供服务器端源,但是viewBean.image和vievBean.infoAccessible之间没有直接的互连(其他一些人也查看了我的代码)。 那么 - 这里的问题是什么?我错过了什么?

在ICEFaces Push更新上有没有其他方法可以隐藏/显示JSF组件?

1 个答案:

答案 0 :(得分:0)

我使用visible="#{mybean.visible}"属性来控制 我的Java托管bean中ICEfaces组件的可见性。

你得到一些奇怪的结果我并不感到惊讶 混合<c:choose>和ICEpush,因为这样做 ICEfaces / ICEpush很难确定改变了什么 页面,需要推送到客户端。

您可以使用visible属性和托管bean吗? 在没有<c:choose>的情况下打开/关闭组件? 然后页面显示的所有逻辑都在托管bean中 而不是在JSF页面。