struts2自定义数据类型转换器------日期转换器

原创 2012年03月27日 13:54:43

Action中最终需要的日期类型为:

 Date sqlDate;
 Time sqlTime;
 java.util.Date utilDate;

自定义转换器存在必然性?若用默认的日期转换器,输入时间12:00会跑错。

以下代码自定义了一个日期转换器:

public class DateTimeConvertor extends DefaultTypeConverter {

 private DateFormat[] dateFormat = { new SimpleDateFormat("yyyy-MM-dd"),
   new SimpleDateFormat("yyyy/MM/dd"),
   new SimpleDateFormat("yy-MM-dd"), };

 private DateFormat[] timeFormat = { new SimpleDateFormat("HH:mm:ssss"),
   new SimpleDateFormat("HH:mm"), };

 @Override
 @SuppressWarnings("all")
 public Object convertValue(Map context, Object value, Class toType) {

  if (toType.equals(java.sql.Date.class)) {

   String[] parameterValues = (String[]) value;

   for (DateFormat format : dateFormat)
    try {
     return new java.sql.Date(format.parse(parameterValues[0])
       .getTime());
    } catch (ParseException e) {
    }

  } else if (toType.equals(java.sql.Time.class)) {

   String[] parameterValues = (String[]) value;

   for (DateFormat format : timeFormat)
    try {
     return new java.sql.Time(format.parse(parameterValues[0])
       .getTime());
    } catch (ParseException e) {
    }

  } else if (toType.equals(java.util.Date.class)) {

   String[] parameterValues = (String[]) value;

   for (DateFormat format : dateFormat)
    try {
     return format.parse(parameterValues[0]);
    } catch (ParseException e) {
    }

  } else if (toType.equals(String.class)) {

   if (value instanceof java.sql.Date) {
   } else if (value instanceof java.sql.Time) {
   } else if (value instanceof java.util.Date) {
    return dateFormat[0].format((java.util.Date) value);
   }
  }

  return super.convertValue(context, value, toType);
 }
}

自定义的日期转换器需要配置(xwork-conversion.properties):定义哪些类型需要使用自定义的类型转换器

java.sql.Date = com.belstar.convertor.DateTimeConvertor
java.sql.Time = com.belstar.convertor.DateTimeConvertor
java.util.Date =com.belstar.convertor.DateTimeConvertor

需要转换的页面字段设计:convertor.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="struts"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
<struts:head theme="simple" />
<style type="text/css">
body,td {
 font-size: 12px;
}
</style>
</head>

<body>

<struts:form action="convertor">  <!-- action 指定对应的action,和struts.xml文件中action元素的name属性对应-->
 <struts:label label="转换器" />
 <struts:textfield name="sqlDate" label="SQL Date:" />
 <struts:textfield name="sqlTime" label="SQL Time:" />
 <struts:textfield name="utilDate" label="Util Date:" />
 <struts:submit value=" 提交 " method="convert" />  <!-- 指定执行action中的哪个方法-->
</struts:form>

</body>
</html>

转换后的显示也页面:convertorSuccess.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="struts"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
<struts:head theme="simple" />
<style type="text/css">
body,td {
 font-size: 12px;
}
</style>
</head>

<body>

 java.sql.Date: <struts:property value="sqlDate" /> <br/>            <!-- struts2标签能够直接显示日期时间类型-->
 java.sql.Time: <struts:property value="sqlTime" /> <br/>
 java.util.Date: <struts:property value="utilDate" /> <br/>
 <br/>
 <a href="convertor.action">&lt;&lt;重新转换</a>

</body>
</html>

关键一步:为action类配置日期转换类

<struts>
 <package name="main" extends="struts-default">
 <action name="convertor"
   class="com.belstar.action.ConvertorAction" converter="com.belstar.convertor.DateTimeConvertor">           <!--表明ConvertorAction类使用的是DateTimeConvertor日期转换器-->
   <result name="input">/convertor.jsp</result>
   <result name="success">/convertorSuccess.jsp</result>
  </action>
 </package>
</struts>

Struts2自定义类型转换器

Struts2自定义类型转换器 博客分类:  Struts2     一  转换器的介绍   在Web应用中,页面提交请求的参数都是字符串类型的。但是...
  • as3517833
  • as3517833
  • 2014年08月20日 21:33
  • 1158

Struts2自定义类型转换器失效的解决

自定义类型转换器的配置有两中方式:在使用局部自定义类型转换器时,在对应Action类所在的包下新建xxxAction-conversion.properties文件,其他配置一切正常,页面提交数据至A...
  • C_____Lee
  • C_____Lee
  • 2017年05月04日 15:28
  • 340

自定义日期类型转换器

(1)首先看一下项目的布局结构: (2)要准备的两个jar包,在lib目录下的,commons-beanutils-1.8.3.jar   commons-logging-1.1.1.jar...
  • u010870518
  • u010870518
  • 2014年12月08日 16:05
  • 1907

Struts2的类型转换器

Struts2的类型转换器 一、概述      在B/S应用中,将字符串请求参数转换为相应的数据类型,是MVC框架提供的功能,而Struts2是很好的MVC框架实现者,理所当然,提供了类型转换机制...
  • u010328895
  • u010328895
  • 2015年07月13日 15:45
  • 2421

【Struts2框架】第七节类型转换-类型转换原理和自定义类型转换器实例

1.类型转换原理 类型转换是struts拦截器来实现的。 类型转换的意思是能够把参数转换成action里面所需要的类型。 转换不了可以使用自己写的转换器(但几乎不用自己写)。 在struts的传参过...
  • u013517797
  • u013517797
  • 2015年07月30日 21:44
  • 2407

Struts2(二)局部与全局类型转换器

所谓类型转换器就是继承一个类DefaultTypeConverter,然后重写方法实现。应用类型转换器会有两种情况: 1、由请求参数的值转换成属性的值 2、使用struts2的标签,进行数据回显...
  • u011731233
  • u011731233
  • 2015年06月17日 18:14
  • 1511

Struts2第五篇【类型转换器、全局、局部类型转换器】

前言上篇博文已经讲解了,Struts2为我们实现了数据自动封装…由上篇的例子我们可以看出,表单提交过去的数据全都是String类型的,但是经过Struts自动封装,就改成是JavaBean对应成员变量...
  • hon_3y
  • hon_3y
  • 2017年05月01日 19:58
  • 183

SpringMVC配置全局日期转换器,处理日期转换异常

spring3.0配置日期转换可以通过配置自定义实现WebBingingInitializer接口的一个日期转换类来实现,方法如下 转换类: public class DateConver...
  • chenleixing
  • chenleixing
  • 2015年04月20日 22:11
  • 25123

struts日期类型转换器

package com.zyf.d_type; import java.text.DateFormat; import java.text.ParseException; import java.te...
  • china_demon
  • china_demon
  • 2017年01月11日 06:32
  • 353

Spring MVC处理JSON数据(3)-自定义消息转换器

Spring MVC处理JSON数据(3)-自定义消息转换器
  • mytt_10566
  • mytt_10566
  • 2017年04月07日 15:55
  • 2306
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2自定义数据类型转换器------日期转换器
举报原因:
原因补充:

(最多只允许输入30个字)