如何在运行时将页面包含在JSPX和Trinidad项目中而不破坏JSF生命周期?

时间:2013-02-21 03:29:45

标签: jsf java-ee jspx trinidad

我正在努力找到一种在JSPX和Trinidad项目中在运行时包含动态确定页面的方法。当你看到我拥有的东西时,你会有一个想法,那就是:

<tr:panelAccordion>

<tr:showDetailItem
    text="Test tab">
    <jsp:include page=".test.jspx" /> <!-- This part is working fine -->
</tr:showDetailItem>

<jsp:scriptlet>
    BackingTest backing = (BackingTest) session.getAttribute("backingTest");
    for (CaseTabConfigurationDTO tab : backing.getTabs()) {

        java.io.File f = new java.io.File(request.getRealPath(tab.getPagePath()));
        if (f.exists()) {
            pageContext.include(tab.getPagePath(), true);
        }
    }
</jsp:scriptlet>
</tr:panelAccordion>

jsp:include part工作正常,没有什么打破JSF生命周期。

jsp:scriplet部分成功包含了正确的页面。但是,它打破了JSF生命周期中的后续操作,包括仍然持久化使用useWindow =“true”打开的对话框的支持bean。

为了让它与Facelet一起投诉,从而不破坏JSF的生命周期。我尝试使用tr:forEach,c:forEach,ui:include,ui:重复方法而没有任何实际包含页面的运气。

你能为它分享一个合适的解决方案吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可能希望重新配置项目,以便use Facelets with Trinidad。重新配置项目后,可以使用Facelets进行模板化。不过,您最终会使用xhtml代替jspx

另见: