【发布时间】:2012-11-26 11:49:26
【问题描述】:
我有一个组件要在用户点击commandButton 后显示/隐藏。
是这样的:
<h:commandButton id="showButton" value="#{bean.wasPressed ? 'Hide' : 'Show'}">
<f:ajax listener="#{bean.toggle()}" render="explanation showButton" />
</h:commandButton>
和
<h:panelGroup id="explanation" rendered="#{bean.wasPressed}">
<h:outputText value="something" />
</h:panelGroup>
bean.toggle() 只是将wasPressed 属性适当地设置为 true 或 false。我正在使用<h:form prependId="false">。
问题是我的按钮的render 属性的值。它明确列出了explanation 和showButton。
只要showButton 始终存在(它只会更改其标签),explanation 仅在wasPressed 属性为真时才存在。否则它会说:
malformedXML:更新期间:未找到说明
我该如何解决这个问题?
我不想恢复隐藏源代码中的元素,所以我不想使用任何 jQuery toggle(-) 或任何使用 style="display: none" 或任何此类东西隐藏元素的方式。
在 JSF 2.1 中甚至可以实现吗?
【问题讨论】:
-
使用 id 向该 panelGroup 添加一个包装器并引用它....您不能引用未呈现的 jsf elememt stackoverflow.com/a/10707789/617373
-
像魅力一样工作,谢谢!能否请您添加此问题的答案,以便我能够接受?
标签: ajax jsf-2 java-ee-6 facelets show-hide