通过注解的方式,可以让方法不用验证

@SkipValidation
public String toRegView() {
   System.out.println("toRegView");
   return "regView";
}
public class ValidateAction extends ActionSupport {
    private static final long serialVersionUID = -6933309304624396640L;

    private String name;
    private Integer age;
    private String password ;
    private String confirmPassword ;

    public String getPassword() {
        return password;
    }

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

    public String getConfirmPassword() {
        return confirmPassword;
    }

    public void setConfirmPassword(String confirmPassword) {
        this.confirmPassword = confirmPassword;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

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

    public String reg() {
        return "success";
    }

    @SkipValidation
    public String toRegView() {
        System.out.println("toRegView");
        return "regView";
    }
}

ActionName-validation.xml

<validators>
    <field name="name">
        <field-validator type="requiredstring">
            <message>name is required</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">5</param>
            <param name="maxLength">10</param>
            <message key="error.name.length" />
        </field-validator>
        <field-validator type="email">
            <message>name is invalid email address!</message>
        </field-validator>
    </field>
    <field name="age">
        <field-validator type="required">
            <message>age is required</message>
        </field-validator>
        <field-validator type="int">
            <param name="min">20</param>
            <param name="max">100</param>
            <message>age rang is wrong!</message>
        </field-validator>
    </field>
    <validator type="expression">  注意这里不是进行字段的校验,所以不用field,用validator
        <param name="expresssion">password == confirmPassword</param>  验证密码是否一致
        <message>password input isn't the same!</message>
    </validator>
</validators>

考虑到国际化的关系,如果把验证的错误提示写在验证的配置文件里,这样就没办法做到国际化

此时应该把错误提示放到一个配置文件中。

在action同目录下,新建一个配置文件,命名规则为:ActionName.properties

error.name.length=${name} is goog name,but length must be between ${minLength} and ${maxLength}.
在配置文件中定义名字长度错误的信息

此时还需要把此处定义信息的key与验证配置文件关联:

<validators>
    <field name="name">
        <field-validator type="requiredstring">
            <message>name is required</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">5</param>
            <param name="maxLength">10</param>
            <message key="error.name.length" />这里的key与上面关联
        </field-validator>
    </field>
</validators>
<html>
    <head>
        <title>reg.jsp</title>
    </head>
    <body>
        <s:actionerror/> 这句是显示密码是否一致的错误消息,与字段错误的消息提示不同
        <s:form namespace="/validate" action="ValidateAction_reg" method="post" theme="xhtml">
            <s:textfield name="name" label="UserName" />
            <s:textfield name="age" label="UserAge" />
            <s:textfield name="password" label="password" />
            <s:textfield name="confirmPassword" label="confirmPassword" />
            <s:submit />
        </s:form>
    </body>
</html>

注意:上面的校验是服务端校验,如果想让客户端校验,可以在form表单加一个属性

<html>
    <head>
        <title>reg.jsp</title>
    </head>
    <body>
        <s:actionerror/>
        <s:form namespace="/validate" action="ValidateAction_reg" method="post" theme="xhtml" validate="true">  加这个属性,就是客户端校验
            <s:textfield name="name" label="UserName" />
            <s:textfield name="age" label="UserAge" />
            <s:textfield name="password" label="password" />
            <s:textfield name="confirmPassword" label="confirmPassword" />
            <s:submit />
        </s:form>
    </body>
</html>

Struts2中的验证框架的更多相关文章

  1. struts2学习笔记(三)—— 在用户注冊程序中使用验证框架

    实现目标:       1.使用验证框架对用户注冊信息进行验证       2.验证username.password.邮箱不能为空       3.验证username.password长度     ...

  2. Struts2中的校验框架

    Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...

  3. [JavaWeb基础] 015.Struts2 表单验证框架

    在web开发的过程中,我们经常要用到一些填写表单的操作,我们一般都要在提交表单信息的时候对表单的内容进行验证,struts2给我们提供了简单的实现接口,让我们可以很容易的对表单进行验证.下面讲解下最传 ...

  4. 第二天(1)声明式验证之使用验证框架验证域模型和ModelDriven验证

    有一类特殊的属性,即这个属性的类型是另外一个JavaBean,如有一个User类,代码如下: package data; public class User { private String name ...

  5. struts2(三)---struts2中的服务端数据验证框架validate

    struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...

  6. struts2 的验证框架validation如何返回json数据 以方便ajax交互

    struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror  />才能取出,(EL应该也可以). 如果使 ...

  7. Struts2(十二)使用验证框架验证数据较验

    一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQu ...

  8. 关于struts2 验证框架在联网的时候可以用,不联网不起作用的问题

    这是一个让我很头痛的问题,我是在一个其他的项目框架的基础上来开发新的项目. 当使用struts验证框架时,突然发现这个验证不起作用了,我就纳闷了之前用这个开发的项目好好的怎么到我这就不能用了呢? xm ...

  9. (七)Struts2 验证框架

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 验证简介 Struts2 基于Struts2 拦截器,为 ...

随机推荐

  1. html中的a标签特例讲解

    将自己的博客写成了一个大杂烩了,遇见啥问题就写啥问题.但是当看见自己网页的成品就特别的开心. 还记得看见过的一个故事,说是收费的东西好还是免费的东西好,有一个答案是最让我记忆深刻的.回复的一个答案是: ...

  2. Delphi用ADOquery主从表例子(转总结)

    http://blog.csdn.net/kandy_zheng/article/details/1639184 在sql server 的northwide 中建立主表 create table s ...

  3. 文件断点续传原理与实现—— ESFramework 通信框架4.0 进阶(12)

    在ESFramework通信框架 4.0 快速上手(13) -- 文件传送,如此简单一文的详细介绍和ESFramework通信框架 4.0 快速上手(14) -- 聊天系统Demo,增加文件传送功能( ...

  4. Java Timer及TimerTarsk(摘自网络)

    Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务. 这种方式可以让程序按照某一个频度执行,但不能指定时间运行.用的较少.任务的调用通过起的子线程进 ...

  5. html5+css3学习笔记-prefixfree前缀补全插件

    虽然现代浏览器支持CSS3,但是一些过往的版本或是目前有些CSS3属性的应用还是离不开前缀的.一些牛逼且执着于web技术且乐于分享的仁兄(Lea Verou)就搞了个名叫prefixfree.js的插 ...

  6. javascript: 常用操作

    1,取得输入框的输入值,修改输入框的输入值 根据id获取id的值 jquery代码: $('#version_number').val(); 解释:$是jQuery的标准用法,('#version_n ...

  7. Sql sever 常用语句(续)

    distintct:  查询结果排除了重复项(合并算一项)--如查姓名 select distinct ReaName from  UserInfo 分页语句:(查询区间时候应该查询出行号,作为分页的 ...

  8. unity Mesh(网格)的使用

    创建两个三角形合成的矩形网格: GameObject obj= new GameObject(); MeshRenderer meshRenderer=obj.AddComponent<Mesh ...

  9. .NET下,关于文件夹权限设置的小细节

    InheritanceFlags 指定哪些接受权限继承 InheritanceFlags.ContainerInherit 下级文件夹要继承权限. InheritanceFlags.None 下级文件 ...

  10. Java語言

    Java编程语言是个简单.完全面向对象.分布式.解释性.健壮.安全与系统无关.可移植.高性能.多线程和动态的编程语言. Java可以撰写跨平台应用软件,是有Sun Microsystems公司于199 ...