现在不输入任何信息,只点击Submit按钮,将看到以下结果:
输入所要求的信息而非错误类的字段,如名称为“text”,年龄为30,然后点击Submit按钮,可以看到以下界面:
这个验证是如何进行的?
当用户按下提交按钮时,Struts2 将自动执行validate方法,如果方法中列出的任何if语句为真,Struts2 将调用addFieldError方法。如果添加了任何错误信息,Struts2 将不会调用execute方法。否则,Struts2 框架将返回input作为调用操作的结果。因此,当验证失败并且Struts2 返回input时,Struts2 框架将重新显示index.jsp文件。由于我们使用Struts2 的form标签,Struts2 会自动在form字段上方添加错误信息。
这些错误信息是我们在addFieldError方法调用中指定的信息。addFieldError方法接受两个参数,第一个是出错时应用的form字段名称,第二个是在form字段上方显示的错误信息。
addFieldError("name","The name is required");
要处理input的返回值,我们需要将以下结果添加到struts.xml中的action节点。
<result name="input">/index.jsp</result>
XML验证
第二种进行验证的方法是在action类旁边放置一个xml文件。Struts2 基于XML的验证提供了更多的验证方式,如email验证、integer range验证、form验证、expression验证、regex验证、required验证、requiredstring验证、stringlength验证等。xml文件需要命名为'[action-class]'-validation.xml。因此,在我们的示例中,创建了一个名为Employee-validation.xml的文件,其含以下内容:
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="name"> <field-validator type="required"> <message> The name is required. </message> </field-validator> </field> <field name="age"> <field-validator type="int"> <param name="min">29</param> <param name="max">64</param> <message> Age must be in between 28 and 65 </message> </field-validator> </field> </validators>
上面的XML文件将保存在CLASSPATH中,理想情况下是与类文件一起保存。以下是没有validate()方法的Employee action类:
package cn.Vue5教程.struts2; import com.opensymphony.xwork2.ActionSupport; public class Employee extends ActionSupport{ private String name; private int age; public String execute() { return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }其余的设置将保持,如同前面的例子一样。现在如果你运行应用程序,它将产生与我们前面例子相同的结果。
使用xml文件来存储配置的优点是允许验证与应用程序代码分离。你可以让开发人员编写代码,让测试人员来创建xml验证文件。另一个需要注意的是默认情况下可用的验证器。Struts有许多默认的验证器,常见的包括:Date验证器,Regex验证器和String Length验证器。点击以下链接可以了解更多“Struts2-XML验证器”的详细信息。
标签:Struts2
相关阅读 >>
更多相关阅读请进入《Struts2》频道 >>

深入理解Java虚拟机 JVM高级特性与实践 周志明 第3版
这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典。