Struts2-学习笔记系列(13)-类型转换异常和校验器

Struts2框架有默认的类型转换错误拦截机制,该配置在struts-default.xml中,名叫conversionError,但是想使用需要继承ActionSupport.

默认的错误提示信息是英语的,若是想自定义,需要修改国际化文件:

mess.properties:

xwork.default.invalid.fieldvalue={0}字段类型转换失败!

对于对象的字段进行提示的话,需要使用局部action属性文件,并制定对应的字段名称

invalid.fieldvalue.user.birth=生日信息必须满足yyyy-MM-dd格式

在交互的时候,经常会有录入错误的情况。若是在服务器端捕获错误,可以使用默认的校验器。

Struts2提供了非常多的类型校验器:比如网址、邮件、数字等。当然,除了在创建专门的校验规则文件外,还可以使用基于注解的校验器:

@RequiredStringValidator(key = "name.required",message = "请输入用户名")
public String getName() {
    return name;
}

重写积累的validate方法

@Override
public void validate() {
    if(!name.toString().contains("zcx")){
        addFieldError("user","用户名必须包含zcx");
    }
}

另外struts还提供了验证validateXxxx技术。其中Xxxxx表示action中的某一个方法

Struts2校验的步骤:
1.类型转换器负责把参数进行转换,并设置成action的属性值

2.执行转换过程中的异常。若是出现异常,保存到actioncontext中,conversionError拦截器将其封装到filederror字段,执行第3步;若是没异常,直接到第3步

3.使用struts配置的校验器进行校验

4.通过反射调用validateXxxx方法

5.调用action类中的validate方法

6.若是前5步都没异常,直接调用本次请求的action;否则转入input逻辑视图对应的视图资源

时间: 2024-08-19 06:19:59

Struts2-学习笔记系列(13)-类型转换异常和校验器的相关文章

struts2 学习笔记

Struts2 学习笔记 在使用J2EE编写网站的时候,我们经常会使用Struts2框架.Struts2的好处就是许多东西已经被封装好了,我们只需要包含给定的jar文件,就能够调用相应的方法和标签.下面我将简要介绍一下Struts2的使用和特点: 一.搭建Struts2的环境:(主要分为三个部分:包含lib文件.web.xml改写.新建一个Struts.xml) 1.打开myeclise软件,新建一个Dynamic web project,在WebContent/WEB-INF文件夹下的lib文

MongoDB学习笔记系列

回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助和启发,文章中有对新技术的研究(Mongo驱动),对老技术的回顾(代码重构),还有对架构设计的阐述等(面向接口编程,对扩展开放,对修改关闭,所以出现了IMongoRepository接口). MongoDB学习笔记系列~目录 MongoDB学习笔记~环境搭建 (2015-03-30 10:34) M

struts2学习笔记(一)

一.struts2和struts1的区别 1.Action类 a) Struts1要求Action类继承于一个抽象类,Struts1普遍使用抽象类编程而不是接口 b) Struts2的Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能.Struts2提供一个ActionSupport基类去实现常用的接口.Action接口不是必须的,任何有execute标识的POJO对象都可以作为Struts2的Action对象. 2.线程模式 a) Struts1的Act

mongodb学习笔记系列一

一.简介和安装 ./bin/mongod --dbpath /path/to/database --logpath /path/to/log --fork --port 27017 mongodb非常的占磁盘空间, 刚启动后要占3-4G左右,--smallfiles 二.基本命令 1.登录mongodb client /use/local/mongo 2.查看当前数据库 show databases; show dbs; 两个可能 3.admin是和管理有关的库,local 是放schema有关

struts2学习笔记(6)------配置struts2中的异常处理

我们平常的异常处理是直接在方法中手动捕捉异常,当捕捉到特定异常后,返回特定逻辑视图名.这样的缺点是代码与异常处理耦合太多,一旦要改变异常处理方式,需要修改代码! struts2提供给了一种更好的方式来处理异常------声明式的方式管理异常处理,我们可以通过再方法里将出现的异常throw出去,抛给struts2框架处理,然后再struts2中默认开启着异常映射功能,该功能在struts-default.xml中配置的一个拦截器,如下: <interceptor name="exceptio

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

struts2学习笔记(8)-------struts2的ajax支持

struts2支持一种stream类型的Result,这种类型的Result可以直接向客户端浏览器响应二进制,文本等, 我们可以再action里面生成文本响应,然后在客户端页面动态加载该响应即可. 直接看例子: public class LoginAction { private String user; private String pass; private InputStream inputStream; public InputStream getInput(){ return inpu

vsphere学习笔记系列-cluster&amp;resources pool

cluster集群  要实现vmotion.DRS.HA等功能,EXSI主机必须是两台或以上的数量.那怎么判断vmotion等漂移功能在哪些主机执行的呢?这就引出了集群cluster的概念.所有基于vmotion的功能都是在集群内的EXSI主机实现的,VM只会在集群内做漂移. 所有EXSI主机加入集群后,CPU.内存等资源都会池化成集群的资源,由集群分配资源给VM.因此,我们可以看到在集群中,EXSI主机和VM是同等级别的排序,而不像在非集群环境中VM和EXSI是从属关系. 值得注意的是虽然由集

Struts2学习笔记(OGNL表达式)

Struts2学习笔记(OGNL表达式) Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言: Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python.Ruby和Smarttalk等)的一些起特性: Velocity,严格来说不是表达式语言,它是一种基于Ja