0

JSPXおよびトリニダードプロジェクトの実行時に動的に決定されたページを含める方法を見つけるのに苦労しています。私が持っているものを見ると、次のようなことがわかります。

<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部分は、正しいページを含めるために正常に実行されます。ただし、useWindow = "true"を使用して開いたダイアログのバッキングBeanを引き続き保持するなど、JSFライフサイクルの後半のアクションを中断しています。

Faceletに不満を持たせるために、JSFのライフサイクルを壊さないようにします。tr:forEach、c:forEach、ui:include、ui:repeatアプローチを使用してみましたが、実際にページを含めることはできませんでした。

そのための適切な解決策を共有できますか?前もって感謝します!

4

1 に答える 1

1

Trinidad で Facelets を使用できるように、プロジェクトを再構成することをお勧めします。プロジェクトを再構成した後、Faceletsをテンプレートに使用できます。xhtmlの代わりに使用することになりjspxます。

以下も参照してください。

于 2013-02-21T11:22:36.800 に答える