2011-08-11 69 views
2

表单中有两个字段的电子邮件地址和电话号码(整数)。该表单使用struts验证框架(ActionClass-validation.xml)进行验证。这两个字段是可选的,所以用户可以将它们留空。但是,如果它们不是空白的,则需要验证这些字段。请帮我了解如何在xml中编写验证器来执行此操作。Struts 2验证字段是否为空

+1

xml是很好,如果你打算重用它们(以节省时间的点),我已经看到很多人绞尽脑汁在正确的正则表达式/ XML语法,只需添加一个验证方法和几行java只需要几分钟! – Quaternion

+0

对于电子邮件来说,在setter上使用@EmailValidator更清晰。请参阅(部分验证注释):http://struts.apache.org/2.x/docs/annotations.html – Quaternion

+0

@Quaternion我也喜欢验证方法。我觉得使用java代码进行验证的功能更强大 – anu

回答

1

试试这个

<field name="email"> 
    <field-validator type="email"> 
     <message>Invalid Email (empty email accepted)</message> 
    </field-validator> 
</field> 

<field name="contact"> 
    <field-validator type="regex"> 
     <param name="expression"><![CDATA[([1234567890]+)]]></param> 
     <message>Invalid Contact Number (empty number accepted)</message> 
    </field-validator> 
</field> 

Here is a complete example.

4

您还可以使用注解。在我看来,它更清晰易懂,易于编写和调试。这是一个例子:

@EmailValidator(type = ValidatorType.SIMPLE, message = "", key = "validation.email") 
public String getEmail() { 
    return email; 
} 

对于号码,您可以使用正则表达式验证:

@RegexFieldValidator(key = "validation.number", message = "", type = ValidatorType.SIMPLE, expression = NUMBER_PATTERN_STRING) 
public String getNumber() { 
    return number; 
} 

在JSP可以使用字段(或动作),错误标签引用错误:

<s:fielderror fieldName="email" cssClass="myerrorclass"/> 
<s:textfield name="email" cssClass="myclass" cssErrorClass="myothererrorclass"/> 

我希望代码是不言自明的。 快乐编码! ;)

+0

如果电子邮件和电话是空的,字符串将通过验证发生Fielderrors。标题是“Struts 2验证字段,如果不是空的” – sytolk