
<h:body> <ui:composition template="/elements/templateWithMenu.xhtml"> <ui:define name="content"> <div > <h:panelGroup ID="lol" rendered="#{test.firstStep.booleanValue()}"> <h3>This should disappear</h3> <h:form ID="newPollForm1" rendered="#{test.firstStep.booleanValue()}"> <fIEldset> <h:commandlink value="Next" action="#{test.firstStepCompleted()}" > <f:AJAX execute="@all" render="lol" /> </h:commandlink> </fIEldset> </h:form> </h:panelGroup> <h:panelGroup rendered="#{test.secondStep.booleanValue()}"> Works! </h:panelGroup> </div> </ui:define> </ui:composition></h:body> 支持bean只是将firstStep设置为false,将secondStep设置为true.
现在,当我尝试运行时,我得到了< f:AJAX>包含一个未知的ID’lo’ – 无法在组件j_IDt39的上下文中找到它.在谷歌搜索后,我发现对于表单范围之外的元素,我需要使用SEParaTOR_CHAR(:).那没用.所以我尝试搞乱#{component}和#{cc}的不同组合,但没有任何效果.我甚至发现了this令人敬畏的解释,但同样,我失败了.如果我使用@all,一切正常(一个面板被另一个面板替换),但我真的需要渲染一个特定的组件.
救命?请?
解决方法 您需要更新公共父级< div class =“rightContent”>代替.总是呈现这一个,从而保证JavaScript / AJAX可以访问和维护其子代.将其替换为< h:panelGroup layout =“block”>并给它一个ID.<h:panelGroup layout="block" ID="content" > <h:panelGroup rendered="#{test.firstStep}"> <h3>This should disappear</h3> <h:form ID="newPollForm1"> <fIEldset> <h:commandlink value="Next" action="#{test.firstStepCompleted()}" > <f:AJAX execute="@form" render=":content" /> </h:commandlink> </fIEldset> </h:form> </h:panelGroup> <h:panelGroup rendered="#{test.secondStep}"> Works! </h:panelGroup></h:panelGroup> 使用此Test.java类:
import javax.faces.bean.ManagedBean;import javax.faces.bean.VIEwScoped;@ManagedBean@VIEwScopedpublic class Test { private int number = 0; public voID firstStepCompleted() { number++; } public boolean isFirstStep() { return number == 0; } public boolean isSecondStep() { return number == 1; }} 请注意,我删除了多余的Boolean#booleanValue()调用以及表单上重复的呈现的转义.
如果仍然不起作用,则/elements/templateWithMenu.xhtml显然包含另一个已添加其ID的命名容器组件.对于尚未记住所有命名容器组件的初学者来说,一个简单的方法来计算真正正确的客户端ID是在浏览器中打开页面,右键单击并查看源代码,然后找到JsF生成的HTML元素并准确获取其ID属性value(并在< f:AJAX render>中)加上前缀:
总结以上是内存溢出为你收集整理的在JSF2中渲染表单范围之外的组件全部内容,希望文章能够帮你解决在JSF2中渲染表单范围之外的组件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)