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自定义日期转换器

1.   日期格式转换器 自定义日期格式转换器,可以动态调整日期格式,并更新到数据库。  /** * 保存日期格式的基础类。 * * @author daichen * */ publi...
  • dc_726
  • dc_726
  • 2012年12月17日 19:50
  • 4879

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

struts2页面到action中date类型自动转换

在Java Web开发中,进行上述转换一般有以下几种: 1、在Servlet中,这一切的转换我们得自己写代码完成; 2、在Struts1.x中,我们通过apachecommons-beanutil...

Struts2自定义日期转换器

1.   日期格式转换器 自定义日期格式转换器,可以动态调整日期格式,并更新到数据库。  /** * 保存日期格式的基础类。 * * @author daichen * */ publi...
  • dc_726
  • dc_726
  • 2012年12月17日 19:50
  • 4879

struts2实现自定义数据类型转换器

/** *刘梦冰发表于2015-6-3 */JSP提交的数据全部都是String类型的。struts2也是通过request.getParameter(name)获取到String类型数据,并通过...
  • lmb55
  • lmb55
  • 2015年06月03日 22:22
  • 749

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

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

struts2 数据类型转换器

jsp提交的参数全部是String
  • wxx0421
  • wxx0421
  • 2014年07月29日 11:12
  • 344

【转载】Struts2学习总结 ---- 数据类型转换器Converter

转换器 converterStruts2支持在自动将在前台请求过来的数据转换成相应的java对象;它是通过一个一个的类型转换器实现的.具体的内置类型转换器有: 转制换器类型 功能 String将int...

struts2自定义类型转换器

struts2除了自身提供的类型转换以为,还允许自定义类型转换器,首先表单中的name属性必须和action中的属性同名,然后编写自定义的TypeConverter,可以实现TypeConverter...
  • lm16875
  • lm16875
  • 2013年06月10日 10:29
  • 571

复习struts2之自定义类型转换器

例1:在action中定义一个参数birth并生成相应的set和get方法 在struts.xml文件中配置出来 在jsp页面中打印出来 当在浏览器中输入的地址为: http://localhost:...
  • w_l_j
  • w_l_j
  • 2012年05月24日 16:03
  • 1184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2自定义数据类型转换器------日期转换器
举报原因:
原因补充:

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