首页 > 其他 > 详细

使用Struts2校验器

时间:2014-03-07 19:38:01      阅读:487      评论:0      收藏:0      [点我收藏+]

今天遇到了这样的问题:我的jsp页面、web.xml、struts.xml、UserAction-validation.xml等内容写的都正确,就是无法使用校验器!在网上找了半天就是不出来,迫不得已我查看了架包问题,在我的测试项目里是xwork-core-2.2.1.jar,而在我实际的项目中是xwork-core-2.3.12.jar,果断去掉了高版本的架包,使用2.2.1的版本;可是问题又出来了,我的项目报错了,说是少架包,我有把2.3.12版加上了,然后试运行,结果OK!不知道是不是把validator给剥离出来了,就去官网看看去吧。

项目如下:

1、jsp中

bubuko.com,布布扣
1 <h2>请输入您的注册信息</h2>
2 <s:fielderror/>
3 <s:form action="user_regist">
4     <s:textfield name="user.userName" label="用户名"/>
5     <s:textfield name="user.password" label="密码"/>
6     <s:textfield name="user.id" label="type"/>
7     <s:submit value="注册" /><s:reset value="重填"/>
8 </s:form>
bubuko.com,布布扣

2、action中:

bubuko.com,布布扣
 1 public class UserAction extends ActionSupport {
 2     private User user;
 3 
 4     public User getUser() {
 5         return user;
 6     }
 7 
 8     public void setUser(User user) {
 9         this.user = user;
10     }
11 }
bubuko.com,布布扣

3、struts.xml中

bubuko.com,布布扣
1 <action name="*" class="com.action.UserAction">
2             <!-- 类型转换失败、输入校验失败,转入该页面 -->
3             <result name="input">/regist.jsp</result>
4             <result>/show.jsp</result>
5         </action>
bubuko.com,布布扣

4、UserAction-validation.xml:

bubuko.com,布布扣
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE validators PUBLIC 
 3     "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
 4     "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
 5 <validators>
 6     <!-- 校验Action的name属性 -->
 7     <field name="user.userName">
 8         <!-- 指定name属性必须满足必填规则 -->
 9         <field-validator type="requiredstring">
10             <param name="trim">true</param>
11             <message>必须输入名字</message>
12         </field-validator>
13         <!-- 指定name属性必须匹配正则表达式 -->
14         <field-validator type="regex">
15             <param name="expression"><![CDATA[(\w{4,25})]]></param>
16             <message>您输入的用户名只能是字母和数字
17                 ,且长度必须在4到25之间</message>
18         </field-validator>
19     </field>
20     <!-- 校验Action的pass属性 -->
21     <field name="user.password">
22         <!-- 指定pass属性必须满足必填规则 -->
23         <field-validator type="requiredstring">
24             <param name="trim">true</param>
25             <message>必须输入密码</message>
26         </field-validator>
27         <!-- 指定pass属性必须满足匹配指定的正则表达式 -->
28         <field-validator type="regex">
29             <param name="expression"><![CDATA[(\w{4,25})]]></param>
30             <message>您输入的密码只能是字母和数字
31                 ,且长度必须在4到25之间</message>
32         </field-validator>
33     </field>
34 </validators>
bubuko.com,布布扣

下面的是从别人那里copy过来的,个人觉得比较好,收藏一下

 

一. 手动输入完成校验

1.普通的处理方式:只需要在action中重写validate()方法

2.一个action对应多个逻辑处理方法:指定校验摸个特定方法的方式:

重写validateXxxx()方法。Eg:如果,只校验login方法,则只需重写validateLogin().

二. 输入校验流程:

1. 类型转换器负责对字符串的请求参数执行类型转换。并将这些值设置成Action的属性值。

2. 转换过程中若出现异常,则将异常信息保存到ActionContext中,conversionError拦截器将其封装到fieldError中。

3. 通过反射调用validateXxx()方法。

4. 调用validate().

5. 如果未出现异常,则转入用户请求的处理方法,如果出现异常,则转入inout视图所指定的视图资源(所以,对于验证的方法,必须要在配置文件中为其指定input)。

三. 基于验证框架的输入校验

1. 编写校验配置文件:命名规则:action类名-validatin.xml.

2. 一个action对应多个逻辑处理方法:指定校验摸个特定方法的方式:

action类名-name属性名-validatin.xml.(name属性名:在strtus配置文件中的)

3. 配置文件存放位置:放在与Action相同的文件夹内。

4. 验证规则:先加载action类名-validatin.xml,

然后加载action类名-name属性名-validatin.xml文件。

5. 校验器的配置风格:两种:字段校验器,非字段校验器。

字段校验器配置格式:

<field name="被校验的字段">

       <field-validator type="校验器名">

             <!--此处需要为不同校验器指定数量不等的校验规则-->

              <param name="参数名">参数值</param>

                  ....................

               <!--校验失败后的提示信息,其中key指定国际化信息的key-->

                <message key="I18Nkey">校验失败后的提示信息</message>

                 <!--校验失败后的提示信息:建议用getText("I18Nkey"),

否则可能出现Freemarker template Error-->

       </field-vallidator>

        <!-- 如果校验字段满足多个规则,下面可以配置多个校验器-->

</field>

非字段校验器配置格式:

<validator type="校验器名">

          <param name="fieldName">需要被校验的字段</param>

          <!--此处需要为不同校验器指定数量不等的校验规则-->        

<param name="参数名">参数值</param>

            <!--校验失败后的提示信息,其中key指定国际化信息的key-->

         <message key="I18Nkey">校验失败后的提示信息</message>

           <!--校验失败后的提示信息:建议用getText("I18Nkey"),

否则可能出现Freemarker template Error-->

</validator>

非字段校验:先指定校验器:由谁来校验,来校验谁!

字段校验器:先指定校验的属性:我来校验谁,由谁来校验!

使用Struts2校验器,布布扣,bubuko.com

使用Struts2校验器

原文:http://www.cnblogs.com/lvzhanhui/p/xiaoqiaolv_struts_validation.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!