在表单提交中需要有日期的输入,默认的Struts2处理机制可能不能满足需求,需要自定义一下类型转换器。如:
String----->java.util.Date:输入
java.util.Date------>String:输出:查询显示,输出错误回显
Struts2会按照**本地默认(与操作系统的区域有关yyyy-MM-dd)**格式自动转换
默认:yyyy-MM-dd-------java.util.Date转换
目标:实现MM/dd/yyyy<------>java.util.Date互相转换
类型转换器的根源、
1、在OGNL中有一个接口为TypeConverter
2、在WebWork中DefaultTypeConverter 实现了OGNL中的TypeConverter接口
3、在Struts2中的StrutsTypeConverter继承了WebWork中的DefaultTypeConverter类。
自定义类型转换器
1、编写一个类,继承StrutsTypeConverter

import org.apache.struts2.util.StrutsTypeConverter;
/*** 自定义类型转化*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;//实现MM/dd/yyyy 与date进行转换(输入日期)
public class MyDateConverter extends StrutsTypeConverter {SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");/*** String---->其他类型Date* @param map* @param values 用户输入的值* @param aClass 目标类型* @return*/@Overridepublic Object convertFromString(Map map, String[] values, Class aClass) {if (aClass != Date.class) {throw new RuntimeException("你输入的不是日期,请选择别的转换器");}if (values == null || values.length == 0) {throw new IllegalArgumentException("没有数据");} else {String sDate = values[0];if (!sDate.trim().equals("")) {try {return df.parse(sDate);} catch (ParseException e) {throw new RuntimeException(e);}}}return null;}/*** 其他类型Date---->string** @param map* @param o   对象* @return*/@Overridepublic String convertToString(Map map, Object o) {if (!(o instanceof Date)) {throw new RuntimeException("你的数据不是日期,请选择别的转换器");}Date date = (Date) o;return df.format(date);}
}

2、注册类型转换器
a、局部类型转换器:只为当前动作使用
1、动作类作为模型:
2、动作类和模型分开:(经常用):
在模型所在的包中,建立以下配置文件(javabean的名称保持一致)
b、全局类型转换器:所有动作使用
在构建路径顶端(src路径下),建立固定名称为xwork-conversion.properties的配置文件
内容为
java.util.Date=com.itheima.converter.MyDateConverter

二、类型转换失败后的提示
a、转换失败,会自动转到一个name=input的逻辑视图,一般指向输入的那个页面,目的回显(建议使用struts2的表单标签)
b、错误消息提示中文版本
前提:动作类继承ActionSupport才能使用

在自定义的类型转换器中,异常必须抛出不能捕获,converterError会处理该异常,然后转入名为input的逻辑试图
在Action所在地包中,创建ActionName.properties,在局部资源文件中配置提示信息 invalid.fieldvalue.属性名=错误信息
在input逻辑试图对应的jsp页面中,通过<s:fielderror/>输出类型转换信息。
如图

该功能是由一个叫做conversionError拦截器负责处理的。

Struts2下创建自定义类型转换器(表单中日期的处理)相关推荐

  1. 创建自定义类型转换器

    三种方法可以创建自定义类型转换器: 实现ognl.TypeConverter接口 继承DefaultTypeConverter类 继承StrutsTypeConverter类 一般使用继承Defaul ...

  2. ​ SpringMVC表单请求参数的绑定,配置编码过滤器解决请求参数中文乱码问题,自定义类型转换器

    文章目录 ​ SpringMVC的参数绑定支持的数据类型 基本数据类型和字符串类型 JavaBean 包装类 Map类型 List类型 POST请求参数中文乱码的解决方法 自定义类型转换器(Date类 ...

  3. Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证

    一.自定义类型转换器 1.编写一个类,继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter 2.覆盖掉其中的public Obj ...

  4. Struts2自定义类型转换器

    重要重要:以后一定要导对包,到错了一个包纠结了一天重点内容 一.Struts2中有自带类型转换器也有自定义类型转换器 1)比如表单提交的信息有 用户名,生日, 年龄, Action中对应的数据类型分别 ...

  5. struts2教程:12、自定义类型转换器

    自定义类型转换器 有两种:1.局部.2.全局 java.util.Date类型的属性可以接收格式为2009-07-20的请求参数值.但如果我们需要接收格式为20091221的请求参数,我们必须定义类型 ...

  6. Spring MVC自定义类型转换器Converter、参数解析器HandlerMethodArgumentResolver

    文章目录 一.前言 二.类型转换器Converter 1.自定义类型转换器 三.参数解析器 1.自定义分页参数解析器 2.自定义注解参数解析器 一.前言 Spring MVC源码分析相关文章已出: S ...

  7. SpringMVC-应用(数据绑定-自定义类型转换器,数据的格式化,数据校验)

    一.提出问题 SpringMVC封装自定义类型对象的时候,JavaBean要和页面提交的数据一一绑定.下面要知道: 1)页面提交的数据都是字符串 2)JavaBean中的属性如:Integer age ...

  8. mybatis 自定义转换规则_Mybatis使用小技巧-自定义类型转换器

    一般情况下,mybatis自带的类型转换器已经足够用了,但是需求永无止境,自定义类型转换器还是学一下吧,指不定哪天会用上. 举个没啥用的示例 javabean如下: public class User ...

  9. 【Spring5.x】对象的生命周期、配置文件参数化、自定义类型转换器、后置处理Bean

    工厂高级特性 对象的生命周期 创建阶段 初始化阶段 - InitializingBean.init-method 销毁阶段 - DisposableBean.destroy-method 对象的生命周 ...

最新文章

  1. 2018年广东工业大学文远知行杯新生程序设计竞赛 1004 明日会吹明日的风β
  2. java时间格式转js_使用jquery或java脚本将日期时间转换为rfc3339格式
  3. python语言网课答案_Python语言答案
  4. python中的for in 语句_2、python,for..in语句
  5. vs可以编译python_Python如何进行编译和反编译
  6. 关于iOS7之后状态栏修改总结
  7. 【Kettle】Win7启动Spoon.bat闪退
  8. Asp.Net 4.0 SEO增强之 UrlRouting
  9. WIN31DOSBox中魔改PWIN32 - 温故、浸馨、继而知新
  10. .net构建轻微博实时热搜新闻站
  11. 10个深度学习软件_关于深度学习的10个问题
  12. 统信UOS_arm64开发环境配置
  13. excel worksheet
  14. IOM计算机组成原理,计算机组成原理设计教案.doc
  15. java list 索引值_List中固定某个索引的值-简单替换位置
  16. foxmail的邮局和端口_橄榄邮Foxmail 7.2 设置详解
  17. ECE220生存指南[02] MP7: GDB 调试Debug
  18. 信捷XD/XC系列PLC 控制台达B2系列伺服电机程序,手动自动,循环,循环次数设定
  19. flutter 旧有V1项目升级V2
  20. 【Docker/GitLab/Jenkins】

热门文章

  1. libjpeg: cannot open
  2. Zookeeper: Zookeeper架构及FastLeaderElection机制
  3. 2019 秦皇岛 I - Invoker Gym - 102361I dp
  4. CF1497C k-LCM
  5. 蓝桥杯 I.双向排序
  6. 牛客题霸 [求平方根] C++题解/答案
  7. 一起开心2020暑假训练第一周
  8. 字符串:凯撒密码(洛谷P1914)
  9. P5048-[Ynoi2019 模拟赛]Yuno loves sqrt technology III【分块】
  10. 牛客练习赛84F-牛客推荐系统开发之下班【莫比乌斯反演,杜教筛】