1

<h:dataTable>チェックボックス、テキスト、およびテキストボックスを含むいくつかの行を表示するためにリストを反復しているJSFページがあります。行のチェックボックスがチェックされている場合、ユーザーは対応するテキストボックス内に値を入力する必要があるように、検証を追加しました。また、ID「コピー」のチェックボックスがあり<h:dataTable>、最初のテキストボックスに入力された値を、チェックボックスがチェックされている他のすべてのテキストボックスにコピーする必要があります<h:dataTable>。同じものに ajax 呼び出しを使用しました。

 <h:form prependId="false" id="form">
 <h:selectBooleanCheckbox value="#{bean.copy}" id="copy">
        <p:ajax process="#{bean.mailId}"
            event="change" partialSubmit="true" 
            listener="#{Controller.copyEmail()}"
            update="rm">
        </p:ajax>
    </h:selectBooleanCheckbox>

   <h:dataTable id="rm" width="100%" cellspacing="4"
        value="#{controller.alertTriggers}" var="alt"
            columnClasses="c1,c2,c3,c4">  
            <h:column>
                  <h:selectBooleanCheckbox value="#{alt.checkValue}" id="checkbox" binding="#{checkbox}"/>
               </h:column>
                <h:column>
                   <h:outputText value="#{alt.id}" />                                       
                </h:column>
                <h:column>
                  <h:outputFormat value="#{alt.msg1}" />                              
                </h:column>
                <h:column>                                              
                     <h:message for="emailID" id="email" styleClass="validation-error"/>
                     <h:inputText value="#{alt.mailId}" id="emailID" style="width: 87%;" required="#{checkbox.value}" requiredMessage="Enter the value"/>

                </h:column>                                         

  </h:dataTable>                                          
 </h:form>  

コントローラーで

public void copyEmail() {

//code for copying the first textbox value to all other textboxes

}

検証は正常に機能しますが、コピーチェックボックスをオンにすると、テキスト ボックスの値が他のテキスト ボックスにコピーされません。代わりに、検証エラーが表示されます。テキストボックスから検証を削除すると、コピー部分は正常に機能します。

immediate=trueajax 呼び出しに使用しようとしました<h:dataTable>が、コントローラー内のチェックボックスの値が更新されません。

ということで、まとめると

ajax 呼び出し中に検証をオフにしたい。以外にそれを行う方法はありますimmediate=trueか?

4

1 に答える 1