2011-08-08 48 views
1

我有一個包含一個複選框(而不是複選框列表)和一個文本框的表單。 如果複選框被選中,則不需要輸入文本框的值。 如果複選框沒有被選中,那麼我需要驗證textfield是否有強制性。 如何使用表達式驗證器。在struts2.0.11中可以這樣做。Struts2 xml驗證複選框不適用於checboxlist

讓我提前知道

回答

1

使用fieldexpression validator。例如:

SomeAction.java

private SomeObject object; // with getter & setter 
private boolean doNotCheck; // with setter 

的Input.jsp

<s:textfield name="object.field" /> 
<s:checkbox name="doNotCheck" /> 
<s:fielderror fieldName="object.field" /> 

SomeAction.validation.xml

<validators> 
    <field name="object.field"> 
     <field-validator type="fieldexpression"> 
      <param name="expression"> 
       <![CDATA[ isDoNotCheck() ? true : (object.field != null && !object.field.isEmpty()) ]]> 
       <!-- OR --> 
       <!-- isDoNotCheck() ? true : !object.field.isEmpty() --> 
      </param> 
      <message>This is a mandatory field</message> 
     </field-validator> 
    </field> 
</validators> 
0

感謝您可以在您的Action類validate()方法,並在其中添加驗證碼。 有關詳細信息,請閱讀文檔。 http://struts.apache.org/2.x/docs/form-validation.html

另一種選擇是xml驗證。 http://struts.apache.org/2.x/docs/validation.html

+0

您好,感謝您的答但是我沒有找到上面在xml驗證中解釋的場景的答案。如果你提供一個例子是非常有幫助的。謝謝 – naveen

+0

閱讀有關表達式驗證和非字段驗證器的部分。您可以使用它來組合標準並形成謂詞。 http://struts.apache.org/2.x/docs/using-non-field-validators.html – Quincy

+0

感謝您的重播。 – naveen