JSFサブビューにHTMLおよびJSFを混ぜます
-
19-09-2019 - |
質問
私が今日持っている問題はJSFと、含まJSPでHTMLを扱うについてです。 だからここの状況だ:私は、タブを使用する(同社層からの)カスタムコンポーネントを持っているのWebsphere V6.1でRADにIBMによってJSF 1.2を使用します。 そして、クリーンなコードを持っているために、私はちょうど、分離JSP、このように各タブのJSFコードを分けたい、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>
タグ異なる方法を使用することを試みたが、唯一の解決策は汚れていると、WebSphereは発狂なりそのまま開閉タグにより<div>
と</div>
を取り囲むようにします。
Googleは、関連する何かを見つけることができませんでしたので、皆さんはすでに同じ問題に遭遇しましたか?それはきれいな解決策を見つけるか、私は同じJSP内のすべての私のコードを含める必要が行うことは可能ですか?事前に感謝します。
解決
まず第一に、それは従来のJSF 1.0 / 1.1行動として認識可能です。 f:verbatim
は確かにJSFコンポーネントツリーにテンプレートのテキストを取る必要がありました。しかし、f:verbatim
は自動的にコンポーネントツリーにf:view
内の任意のテンプレートテキストを取る2006年のJSF 1.2の新しいビューハンドラ以来、完全に不必要です。したがって、あなたは本当にのJSF 1.2を使用してをしていますか? Websphere 1.2への組み込みJSF 1.1ライブラリやアップグレードで6.1船がちょうど/WEB-INF/lib
でLIBSを配置するのと同じくらい簡単ではありません。
あなたの実際の問題に、あなたはないworthfully JSFコンポーネント、f:verbatim
とののみのテンプレートテキストをラップする必要があります。したがって、以下の作業をする必要があります:
<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>