gpt4 book ai didi

java - 用户界面 :include using FaceletsContext

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

我正在使用 PrimeFaces,并且我有下一个 jsf 页面:

<h:form id="form1111">

<p:commandLink value="Include Page" actionListener="#{dynaInclBean.includePage}" update="dynInclTabView"/>
<p:tabView id="dynInclTabView" dynamic="true">
<p:tab title="Somename" binding="#{dynaInclBean.tab}"/>
</p:tabView>
</h:form>

我的支持 bean:

private Tab tab;

public Tab getTab() {
return tab;
}

public void setTab(Tab tab) {
this.tab = tab;
}

public void includePage() throws IOException
{
FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
faceletContext.includeFacelet(tab, "playerPhoto.xhtml");
}

我想将页面包含到选项卡中。当我调用 inlcudePage() 时,出现异常:org.apache.myfaces.view.facelets.el.ContextAwareELException:javax.el.E​​LException:java.lang.NullPointerException

我做错了什么?

最佳答案

MyFaces 中确实不支持此构造。其中,FaceletContext仅在 View 构建时(恢复 View 阶段)可用,并在此阶段结束时立即发布。它会在所有其他阶段抛出类似的 NPE,因为内部 Facelet 上下文已被释放并清空。

这个结构在 Mojarra 中有效。

您最好的尝试是使用 <ui:include src="#{bean.include}">或多个有条件渲染的包含。对于这个问题仍然没有“ chalice ”解决方案。问题很清楚,但考虑到 JSF/Facelets 生命周期,解决方案很难。

另请参阅:

关于java - 用户界面 :include using FaceletsContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13930629/

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