【问题标题】:Struts 2 validate field if not empty如果不为空,Struts 2 验证字段
【发布时间】:2011-10-25 00:42:22
【问题描述】:

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

【问题讨论】:

  • xml 如果您打算重用它们是很好的(这会节省时间),我看到很多人在简单地添加一个正确的正则表达式/xml 语法时绞尽脑汁validate 方法和几行java代码只需要几分钟!
  • 对于电子邮件,在设置器上使用@EmailValidator 会更清楚。请参阅(部分验证注释):struts.apache.org/2.x/docs/annotations.html
  • @Quaternion 我也更喜欢 validate 方法。我觉得使用 java 代码进行验证更强大

标签: java struts2 validation struts-validation


【解决方案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.

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 如果 email 和 phone 为空字符串,验证时会出现字段错误。标题是“Struts 2 validate field if not empty”
    猜你喜欢
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    相关资源
    最近更新 更多