質問

私の質問を始める前に、ここに私の不幸な制限があります:

  1. 私は2ではなくJSF1.2を使用しています;だから複合成分はありません。
  2. 私はfaceletsの代わりにレンダリングにJSPを使用しています;そのため、これらの複合コンポーネントもありません。
  3. サードパーティのタグライブラリ(richFaces、iceFacesなど)を使用することは許可されていません。)

これらの制限は石で設定されています。

今私の質問に移ります。現在、私たちはJSPを持っています subview アドレスの作成を処理します。これには、バッキングbeanとともに、多くのjavascriptがあります。このページは直接使用されることはありません。代わりに、それはaを使用して含まれています <jsp:include />.

ただし、変更できるようにしたい属性がいくつかあります。たとえば、郡が必要ですか、現在アドレススクラビングなどを行っていますか。これを行うには、カスタムコンポーネントを使用するのが理にかなっています(私は思いますか?).しかし、私はこれを行うための最良の方法は本当にわかりません。

できれば、このJSPを複合コンポーネントに変換して、それを使用して実行します。しかし、それは本当に私の限界に基づくオプションではありません。

私のオプションは何ですか?Javascriptの量が関係していなければ、これはそれほど難しいことではありません。私は私の説明が曖昧だったことを知っています;しかし、私は直接の答えよりもガイダンスを探しています。私はカスタムJSF1のようなものをグーグルで検索しました。javascriptなどを使ったxコンポーネントしかし、私は多くの良い記事を見つけていません。

事前に感謝します。

役に立ちましたか?

解決

JSPタグファイルを作成します。

/WEB-INF/tags/foo.tag

<%@ tag body-content="empty" %>
<%@ attribute name="countryRequired" required="false" type="java.lang.Boolean" %>
<%@ attribute name="showAddress" required="false" type="java.lang.Boolean" %>

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<h:panelGrid columns="2">
    <h:outputLabel for="country" value="Country" />
    <h:inputText id="country" value="#{bean.country}" required="${countryRequired}" />

    <c:if test="${showAddress}">
        <h:outputLabel for="address" value="Address" />
        <h:inputText id="address" value="#{bean.address}" />
    </c:if>
</h:panelGrid>

次のように宣言して使用します(追加のXML構成は必要ありません)。:

<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
...
<my:foo showAddress="true" />

JstlもここではFaceletsのような「ビルド時間の表示」タグであることに注意してください。また、使用できないことに注意してください #{} JSPタグ属性を参照する。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top