AJAX渲染属性没有';t使用呈现的=";假;成分
我有一个组件,我想在用户点击AJAX渲染属性没有';t使用呈现的=";假;成分,ajax,jsf-2,java-ee-6,facelets,show-hide,Ajax,Jsf 2,Java Ee 6,Facelets,Show Hide,我有一个组件,我想在用户点击命令按钮后显示/隐藏该组件 是这样的: <h:commandButton id="showButton" value="#{bean.wasPressed ? 'Hide' : 'Show'}"> <f:ajax listener="#{bean.toggle()}" render="explanation showButton" /> </h:commandButton> 及 bean.toggle()只需将wa
命令按钮后显示/隐藏该组件
是这样的:
<h:commandButton id="showButton" value="#{bean.wasPressed ? 'Hide' : 'Show'}">
<f:ajax listener="#{bean.toggle()}" render="explanation showButton" />
</h:commandButton>
及
bean.toggle()
只需将wasPressed
属性适当地设置为true或false。我正在使用
问题是我的按钮的render
属性的值。它明确地包括两个方面:解释
和显示按钮
只要showButton
始终存在(它只会更改其标签),则只有在按下属性时,解释才会存在。否则它会说:
格式错误的Dxml:在更新期间:找不到解释
我怎样才能解决这个问题
我不希望恢复到在源代码中隐藏元素,因此我不希望使用任何jQuery切换(-)或任何使用style=“display:none”
或任何此类内容隐藏元素的方式
在JSF 2.1中,它甚至可以实现吗?您不能更新未呈现的元素,rendered=false“是JSF从DOM树中删除元素的方法
它不像css显示:无或可见性:隐藏使用id向该panelGroup添加包装并引用它。。。。您不能参考未渲染的jsf elememt,它的工作方式很有魅力,谢谢!你能补充一下这个问题的答案吗?这样我就可以接受了?
<h:panelGroup id="explanation" rendered="#{bean.wasPressed}">
<h:outputText value="something" />
</h:panelGroup>
<h:commandButton id="showButton" value="#{bean.wasPressed ? 'Hide' : 'Show'}">
<f:ajax listener="#{bean.toggle()}" render="explanationWrapper showButton" />
</h:commandButton>
<h:panelGroup id="explanationWrapper">
<h:panelGroup id="explanation" rendered="#{bean.wasPressed}">
<h:outputText value="something" />
</h:panelGroup>
</h:panelGroup>