![](/img/trans.png)
[英]JSF 2.0 backing bean method not executed for programmatically created UI element
[英]Programmatically create an <ui:include src=“…”/> in backing bean
在JSF页面中,我有:
<h:form id="form">
<h:panelGroup id="content" layout="block"/>
</h:form>
在Java SessionScoped bean中,我有一个方法:
public void fillContent()
{
UIComponent content = FacesContext.getCurrentInstance().getViewRoot().findComponent("form:content");
content.getChildren().clear();
content.getChildren().add(/*New <ui:include src="Page.xhtml"/>*/);
}
将<ui:include src="Page.xhtml"/>
作为content
子级插入的Java代码是什么? 在哪里可以找到所有JSF Java名称映射的列表?
谢谢
不幸的是ui:include被实现为标签处理程序。 这意味着在构建组件树并且没有相应的UIComponent类时对其进行评估和执行。
为了实现您的目标,您必须在保留对在构造树期间可访问的faceletContext的引用之后,使用javax.faces.view.facelets.FaceletContext#includeFacelet之类的facelets API。 这不是一个简单的方法,我强烈建议改写您的问题并寻找其他解决方案。
我不知道任何有关标签组件/处理程序映射的官方指南,但是我敢肯定,“ Core Java Server Faces”之类的书籍会对此有所帮助。
您可以尝试从facelets入手,例如:
<h:form id="form">
<ui:include src="#{content.path}"/>
</h:form>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.