我有一个 JSF 页面,我在其中迭代一个列表以显示<h:dataTable>
一些包含复选框、一些文本和一个文本框的行。我添加了验证,如果选中了一行中的复选框,用户必须在相应的文本框中输入值。另外,我在上面有一个 id 为“copy”的复选框,<h:dataTable>
它应该将在第一个文本框中输入的值复制到所有其他文本框中,这些文本框中的复选框在<h:dataTable>
.I 中使用了相同的 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=true
我的 ajax 调用,但内部复选框的值<h:dataTable>
没有在控制器中更新。
所以,总而言之
我想在 ajax 调用期间关闭我的验证。除了 有什么办法immediate=true
吗?