2014-04-01 2 views
0

재설정 버튼이 있는데이를 클릭하면 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"이이

+0

type = "submit"의 목표는 무엇입니까? – Tires

+0

@Tires action = ""속성에 대해 backing bean myBean.methodName을 호출해야한다고 가정합니다. 내가 틀렸다면 나를 바로 잡을 수 있습니다. – Kairan

+0

Reset 버튼에서 immediate = true를 모두 제거하려고 시도했습니다. 물론 Reset 버튼을 클릭하면 오류 메시지가 표시됩니다. 그러나 나는 그것이 마지막 3 가지 형식의 리셋 버튼에서만 작동한다는 것을 알았습니다 ... – Kairan

답변

0

원인을 아는 사람에 더 통찰력을 제공합니다.

+0

즉각적인 = "true"를 모든 입력 텍스트 상자에서 제거하려고했지만 오류 메시지가 나타날 때 표시되는 오류 메시지로 문제를 해결하지만 이제는 입력 텍스트 상자 값을 지우지 않습니까? – Kairan

+0

재설정 버튼에서 immediate = true를 모두 제거하려고 시도했지만 물론 재설정 버튼을 클릭하면 오류 메시지가 표시됩니다. 하지만 나는 그것이 마지막 3 가지 형태의 버튼을 리셋하는 것, 처음에는 리셋하지 않는다는 것을 알아 챘다. – Kairan

관련 문제