我正在努力想办法在 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 部分工作正常,没有什么会破坏 JSF 生命周期。
jsp:scriplet 部分成功包含正确的页面。但是,它破坏了 JSF 生命周期中的后续操作,包括仍然保留使用 useWindow="true" 打开的对话框的支持 bean。
为了使它与 Facelet 相适应,从而不破坏 JSF 生命周期。我尝试使用 tr:forEach, c:forEach, ui:include, ui:repeat 方法,但没有任何实际包含页面的运气。
你能分享一个合适的解决方案吗?提前致谢!