浅析struts2中的验证

一、struts2内建的验证程序有哪些?

struts2中的内建的验证程序有15种。我们必须知道struts2为我们提供了哪十五种验证程序,掌握了这些就可以避免做重复工作。

1.required:确保某给定字段的值不是空值null

2.requiredstring:确保某给定字段的值既不是null,也不是空白。

trim参数,默认为true,表示struts在验证该字段值之前先剔除前后空格。

3.stringlength:验证一个非空的字段值是不是有足够的长度。
minLength:相关字段的最小长度,若没有给出这个参数,该字段将没有最小长度限制
maxLength:相关字段的最大长度,若没有给出这个参数,该字段将没有最大长度限制
trim:在验证之前是否去除前后空格

4.date:确保其给定日期字段的值落在一个给定的范围内
max:相关字段的最大值,若没有给出这个参数,该字段将没有最大值限制
min:相关字段的最小值,若没有给出这个参数,该字段将没有最小值限制

5.email:检查给定String值是否是一个合法的email

6.url:检查给定String值是否是一个合法的url

7.regex:检查某给定字段的值是否与一个给定的正则表达式模式相匹配。
expresssion*:用来匹配的正则表达式
caseSensitive:是否区分字母的大小写,默认为true
trim:是否去除前后空格。默认为true

8.int:检查给定整数字段值是否在某一个范围内
min:相关字段的最小值。若没给出这个参数,该字段将没有最小值限制
max:相关字段的最大值。若没给出这个参数,该字段将没有最大值限制

9.conversion:检查对给定Action属性进行的类型转换是否会导致一个转换错误。该验证程序还可以在默认的类型转换消息的基础上添加一条自定义的消息

10.expression和fieldexpression:用来验证给定字段是否满足一个OGNL表达式。
前者是一个非字段验证程序,后者是一个字段验证程序。
前者在验证失败时将生成一个action错误,而后者在验证失败时会生成一个字段错误
expression*:用来进行验证的OGNL表达式

二、Struts2的验证方式

1.声明式验证(推荐)

对哪个Action或Model的哪个字段进行验证

使用什么验证规则

如果验证失败,转向哪个页面,显示什么错误消息

2.编程式验证


三、如何在struts2中实现一个简单的声明式验证?

第一步:明确对哪一个Action的哪一个字段进行验证,例如某个表单中的age字段需要在20-50之间,并且是整数。

<s:textfield name="age" label="Age"></s:textfield>

第二步:编写TestValidationAction类,该类中必须有age属性,并且实现了age属性的getter和setter方法。TestAction类的代码如下:

public class TestValidationAction extends ActionSupport {


/**

*/
private static final long serialVersionUID = 1L;

private int age;

private String password;
private String password2;
private int count;
private String idCard;


public String getIdCard() {
return idCard;
}


public void setIdCard(String idCard) {
this.idCard = idCard;
}


public int getCount() {
return count;
}


public void setCount(int count) {
this.count = count;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;
}


public String getPassword2() {
return password2;
}


public void setPassword2(String password2) {
this.password2 = password2;
}


public int getAge() {
return age;
}


public void setAge(int age) {
this.age = age;
}

@Override
public String execute() throws Exception {
System.out.println("age:"+age);
return SUCCESS;
}


}

第三步:为Action类编写验证的配置文件。配置文件命名规则为Action的类名-validation.xml或者ActionClassName-配置文件中的action对应的name属性的值-validation.xml。把d:\My Documents\Downloads\struts-2.3.24.1\src\apps\blank\src\main\resources\example下的Login-validation.xml复制到当前Action所在的包下,接着把该配置文件改为:把Login改为当前Action的名字。

第四步:在验证配置文件中编写验证规则。参考file:///D:/My%20Documents/Downloads/struts-2.3.24.1/docs/docs/int-validator.html

     <field name="age">
         <field-validator type="int">
             <param name="min">20</param>
             <param name="max">50</param>
             <message>Age needs to be between ${min} and ${max}</message>
         </field-validator>
     </field>

在配置文件中可以通过<message>Age needs to be between ${min} and ${max}</message>定义错误消息。那么,该错误消息可以国际化吗?
可以实现国际化。
第五步:实现错误消息国际化,在国际化资源文件中定义error.int=****Age needs to be between ${min} and ${max}

在JSP页面可以通过message标签引用经过国际化的错误消息<message key="error.int"></message>
第六步:配置验证失败界面。在struts.xml配置文件中的action标签下添加result指定名称为input的标签里配置失败界面。配置如下:

<result name="input">validation.jsp</result>

第七步:在JSP页面中显示错误消息。

分情况显示错误消息:

第一种:若使用的是非simple主题,则自动显示错误消息

第二种:若使用的是simple主题,则需要自己打印这个消息,打印方式如下:

方式一:使用EL表达式结合OGNL读取错误消息${fieldErrors.age[0] }

方式二:使用标签<s:fielderror fieldName="age"></s:fielderror>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值