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 就可以咯

浙公网安备 33010602011771号