Java Struts 2验证字段(如果不为空)

Java Struts 2验证字段(如果不为空),java,struts2,validation,struts-validation,Java,Struts2,Validation,Struts Validation,表单中有两个字段email和phone number(整数)。表单使用struts验证框架(ActionClass validation.xml)进行验证。这两个字段是可选的,因此用户可以将其留空。但如果它们不是空的,则需要验证字段。请帮助我了解如何用xml编写验证器来执行此操作。试试这个 <field name="email"> <field-validator type="email"> <message>Invalid Email

表单中有两个字段email和phone number(整数)。表单使用struts验证框架(ActionClass validation.xml)进行验证。这两个字段是可选的,因此用户可以将其留空。但如果它们不是空的,则需要验证字段。请帮助我了解如何用xml编写验证器来执行此操作。

试试这个

<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>

无效电子邮件(接受空电子邮件)
无效的联系人号码(接受空号码)

您也可以使用注释。在我看来,它更容易理解,更容易编写和调试。这是一个例子:

@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"/>

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

如果您打算重用xml(这将节省时间),那么xml是很好的。我看到很多人在简单地添加验证方法时绞尽脑汁研究正确的正则表达式/xml语法,而使用几行java只需几分钟!对于电子邮件,在setter上使用@EmailValidator更清晰。请参阅(验证注释部分):@Quaternion我也更喜欢验证方法。我觉得使用java代码进行验证更有效如果电子邮件和电话是空字符串,则验证中会出现字段错误。标题是“Struts 2验证字段如果不为空”