재설정 버튼이 있는데이를 클릭하면 f : converter 및 f : validate가 트리거되어 필드를 삭제하기 때문에 의미가 있습니다.JSF 버튼에 대한 유효성 검사 무시
나는 을 읽었으며 immediate="true"
을 사용하여 "재설정"버튼을 클릭했을 때 유효성 검사를 유지하는 방법을 보여 주었고 이는 첫 번째 재설정 버튼에만 유용했습니다.
그러나 리셋 버튼이 여러 개 있으며 속성이 모두 immediate="true"
으로 설정되어 있지만 첫 번째 재설정 버튼에서만 작동하는 것으로 보입니다. 다른 3 개의 재설정 버튼에 대해 잘못된 데이터가 표시된다는 오류 메시지가 계속 표시됩니다. 레이아웃의 경우 배경에
은 내 XHTML이 같이 보입니다 필요 :
<a4j:outputPanel ajaxRendered="true">
<h:messages globalOnly="true" showDetail="false" infoClass="info" warnClass="warning" errorClass="error" fatalClass="fatal" />
<h:message for="field1" errorClass="error"></h:message>
<h:message for="field2" errorClass="error"></h:message>
<h:message for="field3" errorClass="error"></h:message>
<h:message for="field4" errorClass="error"></h:message>
</a4j:outputPanel>
<h:form id="form1" rendered="true">
<h:panelGrid columns="8">
<h:outputText value="#{bundle.label}" />
<h:inputText id="field1" size="18" maxlength="18" immediate="true"
value="#{myBean.myField1}">
<f:converter converterId="LongConverter" />
<f:validateLength minimum="1" maximum="18"></f:validateLength>
</h:inputText>
</h:panelGrid>
<h:commandButton id="reset1" type="submit" value="#{bundle.label}" onclick="resetField()"
styleClass="button" action="#{myBean.reset1}" immediate="true" />
</h:form>
<h:form id="form2" rendered="true">
<h:panelGrid columns="8">
<h:outputText value="#{bundle.label}" />
<h:inputText id="field2" size="18" maxlength="18" immediate="true"
value="#{myBean.myField2}">
<f:converter converterId="LongConverter" />
<f:validateLength minimum="1" maximum="18"></f:validateLength>
</h:inputText>
</h:panelGrid>
<h:commandButton id="reset2" type="submit" value="#{bundle.label}" onclick="resetField()"
styleClass="button" action="#{myBean.reset2}" immediate="true" />
</h:form>
<h:form id="form3" rendered="true">
<h:panelGrid columns="8">
<h:outputText value="#{bundle.label}" />
<h:inputText id="field3" size="18" maxlength="18" immediate="true"
value="#{myBean.myField3}">
<f:converter converterId="LongConverter" />
<f:validateLength minimum="1" maximum="18"></f:validateLength>
</h:inputText>
</h:panelGrid>
<h:commandButton id="reset3" type="submit" value="#{bundle.label}" onclick="resetField()"
styleClass="button" action="#{myBean.reset3}" immediate="true" />
</h:form>
<h:form id="form4" rendered="true">
<h:panelGrid columns="8">
<h:outputText value="#{bundle.label}" />
<h:inputText id="field4" size="18" maxlength="18" immediate="true"
value="#{myBean.myField4}">
<f:converter converterId="LongConverter" />
<f:validateLength minimum="1" maximum="18"></f:validateLength>
</h:inputText>
</h:panelGrid>
<h:commandButton id="reset4" type="submit" value="#{bundle.label}" onclick="resetField()"
styleClass="button" action="#{myBean.reset4}" immediate="true" />
</h:form>
문제가 다양한 형태로 공유되는 버튼이나 아약스와 경우 정말 모르는
? 누군가가 위와 같이 여러 개의 재설정 버튼/필드가있을 때이를 수행 할 수있는 적절한 방법을 말해 줄 수 있습니까?
편집 : 재설정 단추에서 immediate = true를 모두 제거하고 재설정 단추를 클릭하면 오류 메시지가 표시됩니다. 그러나 나는 그것이 마지막 3 가지 형태의 버튼을 리셋하는 것만을 알아 차렸습니다. 내가 바라고
이 그들뿐만 아니라 처리되는 만드는, 입력 필드에 당신은 immediate="true"
이이
type = "submit"의 목표는 무엇입니까? – Tires
@Tires action = ""속성에 대해 backing bean myBean.methodName을 호출해야한다고 가정합니다. 내가 틀렸다면 나를 바로 잡을 수 있습니다. – Kairan
Reset 버튼에서 immediate = true를 모두 제거하려고 시도했습니다. 물론 Reset 버튼을 클릭하면 오류 메시지가 표시됩니다. 그러나 나는 그것이 마지막 3 가지 형식의 리셋 버튼에서만 작동한다는 것을 알았습니다 ... – Kairan