2017-04-24 7 views
1

나는 다음과 같은 문제가 : UI에 validateAllOrNone 구성 요소 :사용 Omnifaces validateAllOrNone 구성 요소 : 반복

내가 (을)를 사용하려고 반복하고 작업 좋네요을. 하지만 내 복합 구성 요소와 함께 작동하지 않습니다.

내 복합 구성 요소는 편안한 입력 전화 번호를 위해 실제로는 p : inputText입니다. 거기에 다른 전화 번호 (inputPhoneNumber) 작업을 제공하는 자바 스크립트를 사용했습니다.

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

또한 전화 번호, 이메일, skype 등의 연락처를 만들 수있는 양식이 있습니다. 이 양식을 통해 연락처 목록을 만들 수 있습니다. 내가 (을)를 사용했다

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

: validateAllOrNone 해당 연락처 유형과 자신의 가치 비어 있지를 확인하기 위해 접촉의 범주 전화 간단한 입력 텍스트 다른 번호가있는 경우 그리고 거기에 내 복합 구성 요소를 사용했다. 그것은 에 대한 페이지 작동 : InputText]를을하지만 를 MyComponent에 사용이 구성 요소에 시도 할 때 :

예외 메시지 : ValidateAllOrNone 속성 '구성 요소'를 참조해야합니다 inputPhoneNumber 나는 다음과 같은 예외를 잡은 기존 클라이언트 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입니다. 그 코드가 같은 lookes 후 :

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

또한 당신은 내가 사용하는 것을 알아야한다 '-'대신에 ':'ID 분리 문자에 대해.