struts2 的输入校验

struts2的输入校验有两种    1.xml配置文件校验 2.重写validate()函数

这两种方法都是通过校验,将设定好的错误信息写入fielderror中,然后跳转到result name="input" 的视图。

1.xml配置文件校验

  xml校验文件应该与所需要校验的action类放在同一个位置,同时名称应该用xxxx-validation.xml  其中xxxx即为所需要校验的action类名。

  比如对于LoginAction类中有个username变量需要校验,我们需要将校验文件命名为   LoginAction-validation.xml

  该文件内容如下(仅进行非空校验)      message中的信息就会被放到  fielderror中  message 可以使用国际化配置文件中的值

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "
-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>用户名不能为空</message>
        </field-validator>
    </field>
</validators> 

 我们在struts.xml配置文件中指定该action的input结果  如下

<action name="login" class="novel.user.action.UserLoginAction">
          <result name="input">/WEB-INF/jsp/login.jsp</result>
          <result name="success">/WEB-INF/jsp/mark.jsp</result>
</action>

  在login.jsp中,通过s:filederror标签来显示之前配置的信息。

用户名:<input type="text" id="username"/> <s:fielderror fieldName="username"/>

以上就是一个很简单的例子。这个例子是针对字段username进行校验的。同时,对于非字段校验器,采用如下的配置  short-circuit为短路校验一个不对就不再进行后续

的信息提示

<validators>  
    <validator type="requiredstring" short-circuit="true">  
        <param name="fieldName">name</param>  
        <param name="trim">true</param>  
        <message key="aa"></message>  
    </validator>  
    <validator type="requiredstring" short-circuit="true">  
        <param name="fieldName">age</param>  
        <param name="trim">true</param>  
        <message>年龄不能为空</message>  
    </validator>  
    <validator type="requiredstring" short-circuit="true">  
        <param name="fieldName">email</param>  
        <param name="trim">true</param>  
        <message>邮箱不能为空</message>  
    </validator>  
</validators>  

下面介绍一下 validator的type 都有哪些类型。用于备忘。

1.required校验器
 
此校验器要求字段必须为非空;
 
2.requiredstring校验器
 
此校验器要求检验字符串非空并且必须长度大于0,即不能是""
可选参数为:
(1)trim:如果为true,则将前后的空白去掉,类似于String的trim函数;
 
3.int校验器
 
此校验器要求整数限定在一定范围之内;
可选参数为:
(1)min:最小值;
(2)max:最大值;
 
4.date校验器
 
要求日期在一定范围之内;
可选参数:
(1)min:最小日期;
(2)max:最大日期;
 
5.fieldexpression校验器
 
要求此校验器满足指定的逻辑表达式;
可选参数:
(1)expression:逻辑表达式;格式为:<![CDATA[(逻辑表达式)]]>
 
6.email校验器
 
要求字段一定要满足电子邮箱格式;
 
7.url校验器
 
要求字段格式满足URL格式;
 
8.stringlength校验器
 
要求字段是string,并且长度在一定范围之内;
可选参数:
(1)trim:删除前后空白;
(2)minLength:最小长度;
(3)maxLength:最大长度;
 
9.regex校验器
 
要求满足给定的正则表达式;
可选参数:
(1)expression:给出正则表达式;格式如:<![CDATA[(正则表达式)]]>
(2)caseSensitive:是否区分大小写;

2.重写validate函数

在函数里面则是自定义的方法

其中validate是对所有进入该action的内容进行校验,如果只想校验某个方法的输入,则采用validateXX函数来进行,其中xx即为action方法,此时validate应为空或者校验公共部分。代码如下所示

if(username==null||username.equals("")){
            this.addFieldError("username", "用户名不能为空");
}

当然,如果要写短路校验,只需要  if   elseif  elseif  elseif 就可以咯

 

  

posted @ 2015-12-21 23:23  麻木鲁克  Views(152)  Comments(0)    收藏  举报