struts2 数据校验

数据校验:

1) 继承ActionSupport

 

         ActionSupport类是一个工具类,它已经实现了Action接口。除此之外,它还实现了Validateable接口,提供了数据校验的功能。

通过继承ActionSupport类,可以简化struts2的Action 开发。

         在Validateable接口中定义了一个validate()方法,重写该方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中

然后通过OGNL表达式负责输出。

举例:

public  void validate(){

    //如果用户名为空,或者用户名为空字符串

   if(getUsername()==null || getUsername().trim().equals(""))

   {

        //添加表单校验错误

      addFieldError("username","user.required");

   }

  //当密码为空,或者密码为空字符串时,添加表单校验错误

  if(getPassword() == null || getPassword().trim().equals(""))

  {

     addFieldError("password","pass.required");

  }

 }

我们仅仅需要早Action添加了数据校验错误,不需要再输入页面输出这些校验错误信息,就可以看到页面已经输出了这些校验信息--这是因为struts2标签,上面的jsp页面中表单使用的并不是HTML表单,而是使用了<s:form.../>,struts2的<s:form.../>标签已经具备了输出校验错误的能力。

上面的程序还存在一个问题:

  校验信息的国际化

查看上面的Action类代码发现:重写validate方法时,如果发生校验失败的问题,校验错误的提示信息是以硬编码方式写死了---这就是去了国际化的能力。

实际上,ActionSupport类已经提供了国际化信息的能力,他提供了一个getText(String key)方法,该方法用于从资源文件中获取国际化信息。所以上面的方法可以修改为

 

 

public  void validate(){

    //如果用户名为空,或者用户名为空字符串

   if(getUsername()==null || getUsername().trim().equals(""))

   {

        //添加表单校验错误

      addFieldError("username",getText("user.required"));

   }

  //当密码为空,或者密码为空字符串时,添加表单校验错误

  if(getPassword() == null || getPassword().trim().equals(""))

  {

     addFieldError("password",getText("pass.required"));

  }

 }

 

2)struts2校验框架

类似于struts1,struts2也允许通过定义配置文件来完成数据校验。struts2的校验框架实际上是基于XWORK的validator

基于上面的action类,不重写validate方法,却增加一个校验配置文件,校验配置文件通过使用strust2已有的校验器,完整对表单域的校验。struts2提供了大量的数据校验器,包括表单域校验器和费表单域校验器。

本应用主要应用了reqiredstring校验器,该校验器是一个必填校验器---指定某个表单域必须输入

 

下面是校验规则的定义文件:

<?xml version="1.0" encoding="GBK"?>

<!--指定校验规则文件的DTD信息-->

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group// XWork Validator 1.0.2//EN"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd

 

 <!--校验规则定义文件的根元素-->

 <validators>

       <!--校验第一个表单域:username-->

         <field name="username">

             <!-- 该表单域必须填写-->

                <field-validator type="reqiredstring">

                       <!--如果校验失败,显示user.required对应的信息-->

                        <message key="user.required">

                 </field-validator>

         </field>

     <!--校验第二个表单域:password-->

         <field name="password">

             <!-- 该表单域必须填写-->

                <field-validator type="reqiredstring">

                       <!--如果校验失败,显示pass.required对应的信息-->

                        <message key="pass.required">

                 </field-validator>

         </field>

</validators>

注意:

定义完该校验规则文件后,该文件的命名应该遵守如下规则:

ActionName-validation.xml:其中actionname就是需要校验的Action类名。

因此上面的校验规则文件应该命名为"LoginAction-validation.xml",且该文件应该与 Action类

的class文件位于同一个路径下,所以上面的校验文件应该放在WEB-INF/classes/lee的路径下即可。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值