博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2输入校验(三)
阅读量:4261 次
发布时间:2019-05-26

本文共 2531 字,大约阅读时间需要 8 分钟。

一、输入校验案例(用户注册)

  1、注册页面register.jsp

用户注册

username:
password:
repassword:
age:
birthday:
graduation:
 2、处理用户注册的action类 RegisterAction.java

public class RegisterAction extends ActionSupport{   private String username;   private String password;   private Integer age;   private Date birthday;   private Date graduation;   //.....setter/getter....  public void validate(){     //用户名长度在4到10之间    if(null == username ||username.length()<4||username.length()>10){         //发生错误后将其添加到Action级别的错误中         this.addActionError("username invalid ");        //将发生的错误将其添加到Field级别错误中         this.addFieldError("username","username is validate");    }    //判断密码、年龄是否符合要求省略    //判断两个日期前后   if(null != birthday && null!= graduation){        Calendar c1 = new Calendar.getInstance();          c1.setTime(birthday);        Calendar c2 = new Calendar.getInstance();          c2.setTime(graduation);          if(!c1.before(c2)){                this.addActionError("birthday should be before graduaction");          }      }  }     public String execute()throws Exception{             return SUCCESS;        }}
 3、配置struts.xml文件

index.jsp
register.jsp
4、如果想要发生错误的提示信息显示到页面上还需要在register.jsp中添加如下代码

二、输入校验说明

  1、通过在Action中的validate()方法进行处理,该方法的默认实现为空实现,因此该方法需要我们自己实现;

  2、Action中各方法的执行顺序:

       1):首先进行类型转换;

       2):然后进行输入校验(执行validate()方法);

      3):再次才是执行execute()方法;如果在上述过程中出现任何错误,都不会执行execute()方法

                页面会转向struts.xml中该action的名为input的result所对应的页面。

  3、自定义方法的输入校验方法

       Action中自定义方法的输入校验,对于通过action的method属性所指定的自定义方法,其对应的自定义输入

       校验方法名为validateMyExecute(假设自定义方法名为myExecute)。

           当Action中即存在默认的校验方法与自定方法的校验方法,自定义的校验方法优先执行。

  

  4、struts2的校验框架(有效的xml文件)

         你想对哪个action进行校验(RegisterAction)

         其对应的校验框架名称为:RegisterAction-validation.xml且该文件要置于与Action相同的包下

 
   5、自定义Field级别的错误提示信息

         1):新建一个以Action名命名的properties文件;

         2):然后在该属性文件中指定每一个出错字段的错误消息

                   属性文件内容:invalid.fieldvalue.字段 = 错误消息

三、关于清空错误信息分析

   对于两个错误级别的清楚方法:

     你会发现当你在action中的validate()方法中的最后写入如下代码:

public void validate(){     this.addActionError("usename is validate");    this.addFieldError("username","is error");    this.getFieldErrors().clear();    this.getActionErrors().clear();}
  访问的现象是:错误提示依旧出现

  原因是:通过两个方法会将之前存放错误信息的ArrayList对象信息拷贝一份到新产生的ArrayList对象(本质是引用的指向),因此

                在对新的ArrayList对象进行clear()时,删除的是新对象的引用。而之前的错误信息没有收到任何影响。

     如果需要进行清空则要调用:

           this.clearActionErrors();

           this.clearFieldErrors();

转载地址:http://zexei.baihongyu.com/

你可能感兴趣的文章
使用 CSS Houdini 绘制平滑圆角
查看>>
聊聊Vue.js的template编译
查看>>
Vue源码阅读连载之响应式设计
查看>>
CSS布局 -- 圣杯布局 & 双飞翼布局
查看>>
产生随机数
查看>>
android 基本布局
查看>>
android 操作系统
查看>>
button事件的两种处理方法
查看>>
android 震动
查看>>
【数据结构与算法】(四) c 语言静态队列的简单实现
查看>>
[linux] unix domain socket 例子
查看>>
[linux] c 实现简单的web服务器
查看>>
栈--判断回文字符串
查看>>
Dijkstra算法--一个点到其余点最短路径
查看>>
解决 The `master` repo requires CocoaPods 1.0.0 - (currently using 0.39.0)
查看>>
gdb调试常用命令
查看>>
vim正则表达式批量修改文本
查看>>
objective-c init方法的写法
查看>>
极客公园 Mac 第三方客户端(swift)
查看>>
【Lintcode】寻找峰值
查看>>