2011-12-14 12 views
4

免責事項:JSF 2.0が存在し、使い慣れていることを認識しています。この質問はJSF 1.1IBM WebSphereについてです。JSF 1.1でコンポーネントのID属性を設定する必要性

ページ上のすべてのJSFコンポーネントが開発時に指定されたID属性を持つ必要があるという考え方は、さまざまな程度のサポートを聞いたことがあります。私は「ALL」のコンポーネントと言うとき、私はすべて...伝統的に「出力のみ」、例えば、<h:ouputText><h:panelGroup><h:panelGrid>、などをしているコンポーネントを含むことを意味...

この質問は、継続的に対応して、内部的にアップしていますログに「重複コンポーネントID」例外が表示されます。重複IDを持つと主張するコンポーネントは、JSF生成IDであるか、明示的に設定できない要素のIDです(たとえば、n行のグリッドの行の要素)。

私は、JSFコンポーネントの色域に関して、どのIDを設定する必要があるか、できないか、または設定する必要があるかについての客観的なガイダンスを探しています。

私の主な関心事は、二つある:

  • レトロ積極的にすべてにIDが重複したコンポーネントのIDのいずれかの可能性 を排除するために怒っダッシュで(おそらく、それらを必要としないとしても、物事を)追加例外の発生は、時間の使用 最高でない場合があります。
  • 実行/レンダリング時にHTMLストリームの結果的膨張は、ページ

補遺に全く建設的な価値を付加しないIDを と単なる醜い、例えば、<span>要素です:

SOに関するより多くの研究と他の記事に基づいて、私はまだちょっと混乱しているかもしれません。含む/親ページで指定<f:subview>

<%-- parent_page.jsp --%> 
<html> 
    <f:view> 
     <f:subview id="myID"> 
      <jsp:include page="included_child_page.jsp" /> 
     </f:subview> 
    </f:view> 
</html> 


<%-- included_child_page.jsp --%> 
<h:outputText value="Some content here..." /> 
:含まれるページ

<%-- parent_page.jsp --%> 
<html> 
    <f:view> 
     <jsp:include page="included_child_page.jsp" /> 
    </f:view> 
</html> 


<%-- included_child_page.jsp --%> 
<f:subview id="myID"> 
    <h:outputText value="Some content here..." /> 
</f:subview> 

B法で指定さ<f:subview>:?:

方法A "正しい" である次の

私たちのJSPの圧倒的多数は、上記の方法Aを使用しています。これらのページの多くから、重複したコンポーネントIDエラーが定期的に発生します。いくつかのページがメソッドBを使用するように変更されました。これらのページからエラーが発生することはほとんどありません.Faces実装で任意のIDを生成する必要があるコレクション(テーブル/リスト)をレンダリングするコンポーネントからです。指定された行または要素のランタイム。

このような経験から、いつどのように動作するべきかを理解することは困難でした。どのように正しいですか?

+3

JSP上のJSF 1.xアプリケーションで重複するコンポーネントIDエラーは、通常、「」タグおよび/または「バインディング」属性を間違った方法で使用することによって発生します。そのIDを全体のビューに持つ** 1つの** ' 'があります(再組み込みのサブビューで注意してください)。**バインディングの背後にあるプロパティに** ** **コンポーネントがバインドされている必要がありますセッションスコープBeanは複数のビューで共有されます)。 – BalusC

+0

」を使用する適切な方法に関する経験的なガイダンスは何ですか?インクルードされたファイル自体に ''タグペアを含めないでください。あるいは、それは優先度、パフォーマンス、または上記のどれですか? – PattMauler

答えて

4

コンポーネントで明示的なIDを指定する必要はありませんでした。 IDがユーザーによって設定されていない場合、JSFは常にIDを生成する必要があります。

つまり、以前のWebSphereが使用していたと思われるJSFリファレンス実装(RI)は、が非常にバグの1.1であったため、誤ってJSFを使用してバグが発生する可能性があります。

関連する問題