in backing bean-6ren"> in backing bean-在 JSF 页面中,我有: 在 Java SessionScoped bean 中,我有一个方法: public void fillContent() { UIComponent c-6ren">
gpt4 book ai didi

java - 以编程方式创建一个 in backing bean

转载 作者:行者123 更新时间:2023-12-01 05:37:22 25 4
gpt4 key购买 nike

在 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"/>的Java代码是什么?如content children ?在哪里可以找到所有 JSF Java 名称映射的列表?

谢谢

最佳答案

不幸的是 ui:include 是作为标签处理程序实现的。这意味着它是在构建组件树时评估并执行的,并且没有相应的 UIComponent 类。

为了实现您的目标,您必须在保留对在树构建期间可访问的faceletContext的引用之后,使用像javax.faces.view.facelets.FaceletContext#includeFacelet这样的facelets api。这不是一个简单的方法,我强烈建议重新表述您的问题并寻找其他解决方案。

我不知道任何有关标记组件/处理程序映射的官方指南,但我确信像“Core Java Server Faces”这样的书籍会对此有所帮助。

您可以尝试首先在 Facelet 中执行此操作,例如:

<h:form id="form">
<ui:include src="#{content.path}"/>
</h:form>

关于java - 以编程方式创建一个 <ui :include src ="..."/> in backing bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com