博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2第五篇【类型转换器、全局、局部类型转换器】
阅读量:6450 次
发布时间:2019-06-23

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


tags: Struts2


前言

上篇博文已经讲解了,Struts2为我们实现了数据自动封装...由上篇的例子我们可以看出,表单提交过去的数据全都是String类型的,但是经过Struts自动封装,就改成是JavaBean对应成员变量的类型了。

但是呢,日期类型只支持是yyyy-MM-dd这种格式的,因为我们在上个例子中直接使用的是Struts支持的格式,因此没有报错...本篇博文就是讲解Struts如何对日期类型的格式更好地支持

日期转换问题

当我们使用的是yyyyMMdd这种格式的时候,我们看看Struts的自动封装能不能解析出相对应的日期

直接抛出了异常

分析

那么,我们怎么让Struts能够支持更多的日期格式呢??比如,我想Struts在自动封装数据的时候支持yyyyMMdd,yyyy年MM月dd日这样的日期格式.....

Struts提供了转换器给我们使用,也就是,我们可以自定义转换器,我们定义了什么格式,Struts就可以根据对应的格式进行自动封装...

当我们写完自定义转换器,是需要向Struts说明我们写了,不然的话,Struts是不知道我们自定义了转换器类的...

也就是说,我们要想实现类型转换,需要两步

  • 编写自定义转换器类
  • 告诉Struts我们写了转换器类

自定义转换器类

一般地,我们想要编写自定义转换器类,都是实现StrutsTypeConverter类的....

/** * Created by ozc on 2017/5/1. * 自定义异常转换器类 * * 我们要实现的就是:在Struts转换的时候, * */public class MyConvter extends StrutsTypeConverter {    //需求,当Struts自动封装数据时,也支持yyyyMMdd,yyyy年MM月dd日等格式的支持\    SimpleDateFormat[] format = {
new SimpleDateFormat("yyyy-MM-dd"), new SimpleDateFormat("yyyyMMdd"), new SimpleDateFormat("yyyy年MM月dd日")}; /** * 把String转换为指定的类型 【String To Date】 * * * @param map * 当前上下文环境 * @param strings * jsp表单提交的字符串的值 * @param aClass * 要转换为的目标类型 */ @Override public Object convertFromString(Map map, String[] strings, Class aClass) { //判断是否有值 if (strings == null) { return null; } //判断是否是日期类型的 if (Date.class != aClass) { return null; } //遍历循环 for (SimpleDateFormat dateFormat : format) { try { //解析传递进来的第一个就行啦 dateFormat.parse(strings[0]); } catch (ParseException e) { //如果格式不对,那么就跳出当前的循环 continue; } } return null; } @Override public String convertToString(Map map, Object o) { return null; }}复制代码

告诉Struts,我写了转换器类

告诉Struts我写了一个转换器类,也分两种方式

  • 定义了局部转换器类,就当前包下的Action类有效
  • 定义了全局转换器类,整个项目有效

全局转换器

步骤:

  • 在src目录下创建一个名为xwork-conversion.properties的文件
  • 配置文件的内容:需要转换的类类型=转换器类的全名java.util.Date=qwer.MyConvter

局部转换器类

步骤:

  • 在当前的Action包下创建名为Action名-conversion.properties的文件
  • 文件的内容为:需要转换的字段【如果是JavaBean里的字段,需要写上JavaBean的】=转换器类的全名user.birthday=qwer.MyConvter

效果


错误提示页面

当发生了日期转换的异常时,Struts给出的页面是这样子的:

这个我们称之为input视图,我们要做的就是给出用户更友好的提示,于是在struts.xml文件中配置:如果返回的是input视图,那么跳转到我们相对应的页面上

/error.jsp
复制代码

如果您觉得这篇文章帮助到了您,可以给作者一点鼓励

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

你可能感兴趣的文章
iOS国际化和genstrings所有子目录本地化字符串
查看>>
spring boot 源码分析(二) 配置文件加载2
查看>>
DataOutput 中一坑
查看>>
Windows下 RabbitMQ的安装与配置
查看>>
并发编程之生产者消费者模式
查看>>
MySQL 索引选择性与前缀索引(示例库)
查看>>
一晚上写出来的游戏 苹果也会推荐!
查看>>
当javaScript从入门到提高前需要注意的细节:变量部分
查看>>
个性导航栏制作
查看>>
HTML标签(一)
查看>>
php写shell脚本
查看>>
nfs服务器在centos6.7 64Bit下的搭建
查看>>
实力为王 八年DBA经验谈
查看>>
Redis SDS
查看>>
date -d "-1 days "
查看>>
表关系配置
查看>>
AWK 工具介绍
查看>>
我的友情链接
查看>>
锐捷7716、7708抓流表(抓包)
查看>>
java 内部类详解
查看>>