0

今日私が抱えている問題は、JSF を使用して、組み込まれた JSP で HTML を処理することです。状況は次のとおりです。私はIBMのJSF 1.2をRADでWebsphere v6.1で使用しています。タブを使用するためのカスタムコンポーネント(会社のレイヤーから)があります。そして、よりクリーンなコードを作成するために、各タブの JSF コードを別の JSP に分離したいだけです。このように、 main.jsp :

<customTag:tabComponent>
<jsp:include page="/jsp/workflow/tab1.jsp"></jsp:include>
<div align="right">
    <customTag:switchToTab title="Next" tabValue="2"></customTag:switchToTab>
</div>
</customTag:tabComponent>

そして私の tab1.jsp :

<!-- Taglibs declared here -->
<f:verbatim>
<div id="myDivId">
    <fieldset>
        <legend>myLegend</legend>
        <h:outputText value="#{myBean.someContent}"></h:outputText>
        <!-- HERE are a lot of JSF components, selectItems, inputText... -->
    </fieldset>
</div>
</f:verbatim>

したがって、JSF コンポーネントは処理されますが、HTML は JSF によって生成された HTML の外側で処理され、後に表示されるようです。何かのようなもの

<table>
    <!-- generated content -->
</table>
<div id="myDivId">
...

テーブルはdiv内にある必要がありますが。タグをさまざまな方法で使用しようとしましたが、唯一の解決策は、開始タグと終了タグを逐語的<f:verbatim>に囲むことでした。<div></div>

Google は関連するものを見つけられなかったので、皆さんはすでに同じ問題に遭遇しましたか? クリーンなソリューションを見つけることは可能ですか、それともすべてのコードを同じ JSP 内に含める必要がありますか? 前もって感謝します。

4

1 に答える 1

2

まず第一に、それはレガシーJSF 1.0/1.1の振る舞いとして認識できます。f:verbatimテンプレートテキストをJSFコンポーネントツリーに取り込むには、実際に必要でした。ただし、 2006年のJSF 1.2の新しいビューハンドラーは、内部のテンプレートテキストをコンポーネントツリーにf:verbatim自動的に取り込むため、これは完全に不要です。f:viewしたがって、実際にJSF 1.2を使用していますか?Websphere6.1には組み込みのJSF1.1ライブラリが付属しており、1.2へのアップグレードはライブラリをに配置するほど簡単ではありません/WEB-INF/lib

実際の問題に関しては、テンプレートテキストのみをラップする必要がありますf:verbatim。JSFコンポーネントは価値がありません。したがって、以下が機能するはずです。

<f:verbatim>
    <div id="myDivId">
        <fieldset>
            <legend>myLegend</legend>
</f:verbatim>
<h:outputText value="#{myBean.someContent}"></h:outputText>
<!-- HERE are a lot of JSF components, selectItems, inputText... -->
<f:verbatim>
        </fieldset>
    </div>
</f:verbatim>
于 2010-01-07T14:12:23.257 に答える