2012-02-24 13 views
2

が含まれ、ここに私の不幸な制限がある:私はJSF 1.2を使用していJSF 1.2カスタムコンポーネントは:私は私の質問を始める前

  1. 、ない2。複合コンポーネントはありません。
  2. 私はfaceletsの代わりにレンダリングのためにJSPを使用しています。これらの複合コンポーネントのいずれも
  3. は、私は、任意のサードパーティのタグライブラリこれらの制限は、石に設定されている

(RichFacesの、ICEfacesを、など)を使用することはできませんよ。

私の質問に移動します。現在、住所の作成を処理するJSP subviewがあります。これに伴ってたくさんのjavascriptがあり、backing beanもあります。このページは決して直接使用されません。代わりに、<jsp:include />を使用しています。

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

可能であれば、私はこのJSPをコンポジットコンポーネントに変換して完了させるだけです。しかし、それは私の限界に基づく選択肢ではありません。

私のオプションは何ですか?これは複雑なjavascriptの量でなければそれほど難しくありません。私の説明はあいまいであることは分かっています。しかし、私は直接的な答えよりもガイダンスを探しています。私はjavascriptなどでカスタムJSF 1.xコンポーネントなどのものを探してきましたが、多くの良い記事は見つかりませんでした。

ありがとうございます。

+2

ボクシンググローブを着用している間、彼らはあなたがフライパンからフライパンを選ぶと期待しているように聞こえます。行ったことがある。フォームフィールドにカスタム検証を追加する必要があるようです。本当の疑問は、なぜ「jsp:include」がこれを忘れているのでしょうか? IMFが壊れているJSF1.2仕様の下でカスタムコンポーネントを書く方法を学ぶ能力以外に、カスタムコンポーネントはテーブルに何をもたらしますか? –

+0

それはとても簡単だった場合! JSFバリデータを使用して検証は行われません。必要な属性を定義することさえできません。彼らはそれを変えたくありません。検証以外にも多くのカスタマイズが必要です。たとえば、contactId(連絡先テーブルのPK)が正面で定義される必要がある別の連絡先に各アドレスを割り当てることができます。表示ロジックもあります。このアドレスは、郵送先のアドレスではなく、緯度/経度を使用して定義された正当な住所にすることができますか? –

+0

@Zack ...私はちょうどあなたが仲間のYinzerであることに気付きました。あなたがチャンスを得たらチャットで私と会って、私たちのための部屋を作ります。私はこれを話したい。 –

答えて

2

JSPタグファイルを作成します。 JSTLは、 "ビューのビルド時間" タグのFaceletsのように似ここにもあることを

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

注:(必要に応じて追加のXML構成)を次のないよう

/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> 

宣言し、それを使用します。また、#{}を使用してJSPタグ属性を参照することはできません。

+0

これは素晴らしい解決策のようです。これに属性を追加するとき、私はそれでもELを使うことができますが、それは正しいのですか? '' –

+0

これはIBM WAS 7(JSF 1.2、JSP 2.1)では機能しません。 – Stefan

関連する問題