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

  1. @SkipValidation
  2. public String toRegView() {
  3. System.out.println("toRegView");
  4. return "regView";
  5. }
  1. public class ValidateAction extends ActionSupport {
  2. private static final long serialVersionUID = -6933309304624396640L;
  3.  
  4. private String name;
  5. private Integer age;
  6. private String password ;
  7. private String confirmPassword ;
  8.  
  9. public String getPassword() {
  10. return password;
  11. }
  12.  
  13. public void setPassword(String password) {
  14. this.password = password;
  15. }
  16.  
  17. public String getConfirmPassword() {
  18. return confirmPassword;
  19. }
  20.  
  21. public void setConfirmPassword(String confirmPassword) {
  22. this.confirmPassword = confirmPassword;
  23. }
  24.  
  25. public String getName() {
  26. return name;
  27. }
  28.  
  29. public void setName(String name) {
  30. this.name = name;
  31. }
  32.  
  33. public Integer getAge() {
  34. return age;
  35. }
  36.  
  37. public void setAge(Integer age) {
  38. this.age = age;
  39. }
  40.  
  41. public String reg() {
  42. return "success";
  43. }
  44.  
  45. @SkipValidation
  46. public String toRegView() {
  47. System.out.println("toRegView");
  48. return "regView";
  49. }
  50. }

ActionName-validation.xml

  1. <validators>
  2. <field name="name">
  3. <field-validator type="requiredstring">
  4. <message>name is required</message>
  5. </field-validator>
  6. <field-validator type="stringlength">
  7. <param name="minLength">5</param>
  8. <param name="maxLength">10</param>
  9. <message key="error.name.length" />
  10. </field-validator>
  11. <field-validator type="email">
  12. <message>name is invalid email address!</message>
  13. </field-validator>
  14. </field>
  15. <field name="age">
  16. <field-validator type="required">
  17. <message>age is required</message>
  18. </field-validator>
  19. <field-validator type="int">
  20. <param name="min">20</param>
  21. <param name="max">100</param>
  22. <message>age rang is wrong!</message>
  23. </field-validator>
  24. </field>
  25. <validator type="expression"> 注意这里不是进行字段的校验,所以不用field,用validator
  26. <param name="expresssion">password == confirmPassword</param> 验证密码是否一致
  27. <message>password input isn't the same!</message>
  28. </validator>
  29. </validators>

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

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

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

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

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

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

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

  1. <html>
  2. <head>
  3. <title>reg.jsp</title>
  4. </head>
  5. <body>
  6. <s:actionerror/>
  7. <s:form namespace="/validate" action="ValidateAction_reg" method="post" theme="xhtml" validate="true"> 加这个属性,就是客户端校验
  8. <s:textfield name="name" label="UserName" />
  9. <s:textfield name="age" label="UserAge" />
  10. <s:textfield name="password" label="password" />
  11. <s:textfield name="confirmPassword" label="confirmPassword" />
  12. <s:submit />
  13. </s:form>
  14. </body>
  15. </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. hdu_3341_Lost's revenge(AC自动机+状态hashDP)

    题目链接:hdu_3341_Lost's revenge 题意: 有n个模式串,一个标准串,现在让标准串重组,使得包含最多的模式串,可重叠,问重组后最多包含多少模式串 题解: 显然是AC自动机上的状态 ...

  2. 0. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  3. Maxmum subsequence sum problem

    We have a lot of ways to solve the maximum subsequence sum problem, but different ways take differen ...

  4. [SOJ] 1282. Computer games (KMP)

    坑爹题 1282. Computer Game Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Brian is an ...

  5. Arch安装详解

    选择安装方式 CD/USB Arch启动盘安装 使用Arch启动盘比较简单方便,没有额外设置,直接阅读下一步. USB flash installation media 启动盘制作: USB flas ...

  6. 通过RVM安装Ruby失败

    第一次安装失败是由于Homebrew一直安装不成功,遂去http://brew.sh/index_zh-cn.html官网 通过 /usr/bin/ruby -e "$(curl -fsSL ...

  7. 关于oracle数据库(10)函数

    分析函数,用于统计排名 语法:函数名() over(order by 排序字段 asc | desc) row_number() 无论值是否相等,生成连续的行号 -- 1,2,3,4, select ...

  8. C++ 使用string一行一行读取文件

    c++ 读取文件中的一行一行数据 通用模板: std::ifstream in(dictpath); if(!in) { std::cout << __DATE__ << &q ...

  9. HDU 1969 Pie

    二分答案+验证(这题精度卡的比较死) #include<stdio.h> #include<math.h> #define eps 1e-7 ; double a[ff]; d ...

  10. thinkphp整合系列之phpqrcode生成二维码

    php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...