繁体   English   中英

以编程方式创建一个 <ui:include src=“…”/> 在支持豆

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM