一,概述

struts2中默认会对1995-07-08这种日期类型的数据进行类型转换,转换为Date类型,但是有时用户在jsp页面提交表单时提交的是19950708、1995年07月08日这种类型的话,那么就会转换出错。解决方法当然就是自定义类型转换器了。

二,自定义局部类型转换器

1)注册页面提交数据
<form action="${pageContext.request.contextPath }/user_register" method="post">用户名:<input type="text" name="user.username"/><br/>密码:<input type="password" name="user.pwd"/><br/>年龄:<input type="text" name="user.age"/><br/>生日<input type="text" name="user.birth"/><br/><input type="submit" value="注册"/><br/></form>

2)对应的JavaBean

package com.bighuan.d_type;import java.util.Date;public class User {private String username;private String pwd;private int age;private Date birth;public User() {}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}}

3)acting类

package com.bighuan.d_type;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String register(){System.out.println(user.getUsername());System.out.println(user.getPwd());System.out.println(user.getAge());System.out.println(user.getBirth());return SUCCESS;}}

4)配置action,使用的是全局配置,注册成功跳转到index.jsp.

<package name="type" extends="struts-default"><global-results><result name="success">/index.jsp</result></global-results><action name="user_*" class="com.bighuan.d_type.UserAction"method="{1}"></action></package>

5)自定义转换器类,要继承StrutsTypeConverter类.

package com.bighuan.d_type;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;
import org.omg.CORBA.StructMemberHelper;/*** 自定义类型转换器* @author bighuan**/
public class MyConverter extends StrutsTypeConverter {// 新需求: 要求项目中要支持的格式,如: yyyy-MM-dd/yyyyMMdd/yyyy年MM月dd日..// 先定义项目中支持的转换的格式DateFormat[] df = { new SimpleDateFormat("yyyy-MM-dd"),new SimpleDateFormat("yyyyMMdd"),new SimpleDateFormat("yyyy年MM月dd日") };/*** 把String转换为指定的类型 【String To Date】* * @param context*            当前上下文环境* @param values*            jsp表单提交的字符串的值* @param toClass*            要转换为的目标类型*/@Overridepublic Object convertFromString(Map context, String[] values, Class toClass) {// 判断: 内容不能为空if(values.length== 0 || values == null){return null;}// 判断类型必须为Dateif(Date.class != toClass){return null;}// 迭代:转换失败继续下一个格式的转换; 转换成功就直接返回for (int i=0; i<df.length; i++) {try {return df[i].parse(values[0]);} catch (Exception e) {continue;}}return null;}@Overridepublic String convertToString(Map arg0, Object arg1) {// TODO Auto-generated method stubreturn null;}}

6)配置局部转换器,命名格式为:Action名称-conversion.properties.Action就是为那个Action类准备转换器的那个Action的名字.当前转换器的名字为UserAction-conversion.properties,

里面的内容为:
user.birth=com.bighuan.d_type.MyConverter

需要注意的是,转换器必须和目标转换器类(UserAction)在同一个包下,转换器的命名格式是有一定规则的,必须是Action名称-conversion.properties.

三,自定义全局类型转换器

1)上面那种方式只对UserAction有效,如果其他的Action也要进行类型转换的话,还要写过一个局部类型转换器.但是使用全局类型转换器就只要配置一个即可.
2)在src目录下,新建一个xwork-conversion.properties,名称固定哦,就是这个名字.properties文件内容为:
java.util.Date=com.bighuan.d_type.MyConverter

这样一个全局类型转换器就完成了.

struts2之日期类型转换相关推荐

  1. Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)

    一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...

  2. SpringMVC日期类型转换问题处理方法归纳

    前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后 台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然 ...

  3. SpringMVC 日期类型转换

    全局日期类型转换配置 配置SpringMVC配置文件 <bean id="conversionService" class="org.springframework ...

  4. Struts2中的类型转换

    1.     Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...

  5. 项目中技术细节(button用法、前端操作json、 hibernate的query.setFirstResult的用法注意、struts2中日期格式化标签)

    button的用法 struts2 s:iterator 中按钮获得当前行数据,并跳转 <button id="submissionz" onclick="var ...

  6. struts2之token,类型转换和数据校验

    文章目录 1 Token防重 1.1 token内部原理 1.2 实现步骤 1.2.1 在页面中添加标签 1.2.2 配置strtus.xml配置 2 类型转换器 2.1 Struts2类型转换 2. ...

  7. Struts2 datetimepicker 日期月份乱码解决

    在使用 Struts2 dateTimePicker 控件时, 9月份后会出现乱码现象. (本人以struts2-dojo-plugin-2.2.1为例子) 请替换或直接修改以下文件(并保存为UTF- ...

  8. mysql 日期类型转换

    原文链接:https://www.cpweb.top/965 1.使用cast() 和 convert() 函数实现日期格式的转换   语法格式:    convert( 表达式,数据类型 )     ...

  9. struts2.x自定义类型转换

    struts2的类型转换是基于OGNL(对象图像导航语言) 1   OGNL里面有一个接口TypeConverter,该接口有一个方法convertValue,convertValue该方法很复杂,里 ...

  10. Date日期类型转换

    1.String 类型转换Date类型 import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...

最新文章

  1. Linux I2C(一)之常用的几种实例化(i2c_client ) 【转】
  2. TagCloudView云标签的灵活运用
  3. android从放弃到精通 第八天 freedom
  4. 极简的 PNG 编码函数 svpng(),用来学习C语言,真的很爽
  5. sysbench在美团点评中的应用
  6. 制图折断线_甲级设计院CAD制图技巧与画法讲解! 超实用,值得你收藏~
  7. 吴恩达深度学习 —— 2.15 python中的广播
  8. linux常用关机命令,linux下常用关机命令
  9. ug10.0安装好了怎么找到
  10. 零基础入门微信小程序开发
  11. 从IRQ到IRQL(PIC版)
  12. 知乎--LSTM(挺全的)
  13. 时间的单位 频率单位 换算
  14. win10下docker部署nginx+node+mongodb+redis学习
  15. 各大搜索引擎蜘蛛名称
  16. 关于Python启动程序的其他方法,这些你应该知道>_(Python编程 | 系统编程 | 并行系统工具 | 启动程序的其他方法)
  17. 在cadence中使用VerilogA
  18. 微信小程序之model弹框
  19. 现代检测技术--概论
  20. 计算机的论文创新点怎么写,如何写论文创新点.doc

热门文章

  1. 第四周任务:wordCountPro
  2. 简化版shell远程登录脚本
  3. Maven 打包错误:%JAVA_HOME%/../lib/tools.jar
  4. 如何有效使用OpenPower720(上)
  5. SOA项目技术实施指南
  6. 18.卷1(套接字联网API)---路由套接字
  7. 9.打开ZF的错误提示
  8. 73. 文件上传函数封装
  9. 15. jQuery - 删除元素
  10. 2.5. 标准路由器:Zend_Controller_Router_Rewrite