2017-04-24 7 views
1

を繰り返しますUIにOmnifaces validateAllOrNoneコンポーネントを使用する:私は、次の問題を抱えている

を私はOを使用してみてください:UIにvalidateAllOrNoneコンポーネント:繰り返して、それは素敵な仕事だし。しかし、私の複合コンポーネントでは動作しません。

私の複合コンポーネントは本当に簡単ですp:inputText快適な入力電話番号です。そこでは、私は別の電話番号(inputPhoneNumber)で仕事を提供するjavascriptを使用しています。

<p:inputText id="#{cc.attrs.id}" type="tel" label="Номер телефона" value="#{cc.attrs.value}" required="#{cc.attrs.required}" 
      styleClass="#{cc.attrs.styleClass} m-pad-left50" style="#{cc.attrs.style}"> 
</p:inputText> 

<script> 
    $("#{cc.fullId}").intlTelInput(
     { 
      utilsScript: "intl-tel-input/js/utils.js", 
      autoHideDialCode: false, 
      nationalMode: false, 
      preferredCountries: [#{cc.preferredCountries}], 
      onlyCountries: [#{cc.countries}], 
      dropdownContainer: 'body' 
     } 
    ); 
</script> 

また、私は、電話番号、電子メール、スカイプやらなどの連絡先を作成するためのフォームを持っています。フォームで連絡先のリストを作成できます。そして、の接触のカテゴリは、単純な入力テキスト、他の電話番号であればそこに私は複合コンポーネントを使用しています

私はOを使用していますvalidateAllOrNoneをその接触式と彼の価値はない、空をチェックします。 ValidateAllOrNone属性 "コンポーネントの参照する必要があります:

例外メッセージが

:私は次の例外をキャッチしているinputPhoneNumber:のinputTextが、私は MyComponentのために使用されるこのコンポーネントにしようとしている:それは、pに対して動作します既存のクライアントIDは です。クライアントID 'contact_type'が見つかりません。を繰り返します

私はUIにフル取得する方法を知っている質問the questionを発見しました。その後、私は私のコードを書き換えています

<ui:repeat id="contact_list" value="#{bean.contacts}" var="contact" varStatus="status"> 
    <p:selectOneMenu id="contact_type" value="#{contact.type}"> 
     ... 
    </p:selectOneMenu> 

    <p:outputPanel rendered="#{contact.category.equals(category.PHONE)}"> 
     <mycomponent:inputPhoneNumber id="contact_phone_value" value="#{contact.value}" preferred="ru"> 
     <o:validateAllOrNone components="contact_creation_form-contact_list-#{status.index}-contact_type contact_phone_value"/> 
    </p:outputPanel> 

    <p:outputPanel rendered="#{ne contact.category.equals(category.PHONE)}"> 
     <p:inputText id="contact_other_value" value="#{contact.value}"/> 
     <o:validateAllOrNone components="contact_type contact_other_value"/> 
    </p:outputPanel> 
</ui:repeat> 

は、今私は、接触型の正しいIDを入れているが、私は同じ例外をキャッチ:

例外メッセージ:ValidateAllOrNone属性「コンポーネント」は を参照する必要があります既存のクライアントID。クライアントID 'contact_creation_form-list-2-contact_type'が見つかりません。

どうすればこのプログレムを修正できますか?

答えて

0

反対側から行ってください。複合コンポーネントの完全なIDを取得して、o:validateAllOrNoneで簡単に使用できます。問題を修正しました。この場合の複合コンポーネントの正しいIDはcontact_phone_value-contact_phone_valueです。そのコードは次のようになります:

<ui:repeat value="#{bean.contacts}" var="contact"> 
    <p:selectOneMenu id="contact_type" value="#{contact.type}"> 
     ... 
    </p:selectOneMenu> 

    <p:outputPanel rendered="#{contact.category.equals(category.PHONE)}"> 
     <mycomponent:inputPhoneNumber id="contact_phone_value" value="#{contact.value}" preferred="ru"> 
     <o:validateAllOrNone components="contact_type contact_phone_value-contact_phone_value"/> 
    </p:outputPanel> 

    <p:outputPanel rendered="#{ne contact.category.equals(category.PHONE)}"> 
     <p:inputText id="contact_other_value" value="#{contact.value}"/> 
     <o:validateAllOrNone components="contact_type contact_other_value"/> 
    </p:outputPanel> 
</ui:repeat> 

また、私は「delimeter」の代わりに「 - 」を使用しています。

関連する問題