我遇到了使用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组件?
答案 0 :(得分:0)
我使用visible="#{mybean.visible}"
属性来控制
我的Java托管bean中ICEfaces组件的可见性。
你得到一些奇怪的结果我并不感到惊讶
混合<c:choose>
和ICEpush,因为这样做
ICEfaces / ICEpush很难确定改变了什么
页面,需要推送到客户端。
您可以使用visible
属性和托管bean吗?
在没有<c:choose>
的情况下打开/关闭组件?
然后页面显示的所有逻辑都在托管bean中
而不是在JSF页面。