2

有问题: ui:include JSF tag 后面的类 我发现需要使用 IncludeHandler 才能使用

<ui:include>

以编程方式。但是,构造函数需要一个“配置”参数,我不知道如何设置它。
请举例说明如何使用 IncludeHandler 进行简单的包含,例如

<ui:include src="include.xhtml" />

我的 jsf 组件目前是以编程方式构建的,但我想包含一些写为“.xhtml”的部分。所以最后一个网页设计师只是有一个像这样的组件

<fg:generator></fg:generator>

和一些“.xhtml”文件来玩弄样式。如果有比 IncludeHandler 更好的方法(仍然需要使用 Java),请告诉我:)

4

1 回答 1

4

如果您的唯一目的是以<ui:include>编程方式使用,那么您应该FaceletContext#includeFacelet()改为使用。假设您在自定义组件中:

FacesContext facesContext = FacesContext.getCurrentInstance();
FaceletContext faceletContext = (FaceletContext) facesContext.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
faceletContext.includeFacelet(this, "include.xhtml"); // this is your current UIComponent.

这是另一个演示通过命令按钮动态包含的启动示例:

<h:form>
    <h:commandButton value="include" action="#{bean.include}" />
</h:form>
<h:panelGroup id="include" />

public void include() throws IOException {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    FaceletContext faceletContext = (FaceletContext) facesContext.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
    faceletContext.includeFacelet(facesContext.getViewRoot().findComponent("foo"), "include.xhtml");
}
于 2012-06-01T16:16:36.133 回答