2016-11-21 3 views
0

私はこのようなFaceletsのタグを持っている:私は、これは同じページに二度タグをFaceletsのinlcude場合JSF:同じFaceletsを含む場合に、コンポーネントのid例外を複製タグを二回

<ui:composition> 
    <h:outputText value="#{label}"/> 
    <h:inputText id="input" value="#{value}"/> 
    <h:message for="input"/> 
</ui:composition> 

は今、私は文句例外を取得します構成句IDを複製します。 https://stackoverflow.com/a/21572756/1785730で提案されている解決策の1つは、idの接頭辞を指定することでした。しかし、このfaceletsタグを使用するたびにidプレフィックスが必要になるのは面倒です。ところで、私はタグの外にh:inputTextのIDは必要ありません。

だから、私はこの問題を解決することができますどのように二つの方法を考えています:idを指定せずのinputText:Hへのメッセージ:

  1. は、hをリンクする方法はありますか?
  2. もしそうでなければ、タグをNamingContainerでラップすることができます。どの要素がそれにふさわしいでしょうか?そのタグはすでにフォームに入っているので、私はh:formを使うことはできません。
+0

あなたが参照するリンクから「3」をしないのはなぜですか? – Kukeltje

+0

私はより軽量なソリューションを探していました。私はfaceletsで滞在することを好むだろう。 – user1785730

+0

さらに、複合コンポーネントは最後に* 1 *コンポーネントです。私のタグは3列のh:panelGridに収まります。 – user1785730

答えて

-2

あなたのページでは、UIを定義する必要があり、その中に形成し、入力する必要があり、UI構図内でこの

<f:view contracts="default" transient="false"> 
    <ui:composition template="/template.xhtml"> 
     <ui:define name="content"> 
      <h:form> 
       inputs 
      </h:form> 
     </ui:define> 
    </ui:composition> 
</f:view> 

ようにする必要があります。

+1

タグを2回含むと、重複ID例外がどのように解決されますか? – user1785730

+0

すべてのフォームで、すべてのタグには一意のIDが必要です。あなたのページを改善し、メインテンプレートなしでFaceletsのコンポジションを使用しています。次に、毎h:フォームコンポーネントには一意のIDがあります。 –

関連する問題