针对日期类java.util.Date进行类型转换,要求客户端使用“yyyy-MM-dd”,“yyyy/MM/dd”中的任意一种输入,并以“yyyy-MM-dd”的格式输出,该类型转换应用于全局范围

先定义一个实体类

package cn.entity;

import java.util.Date;

public class User {
private String username;//名字 private Integer age;//年龄 private Date birthday;//生日 public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} }

创建Action

package cn.action;

import cn.entity.User;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
private User user;
public String execute(){
System.out.println("姓名:"+user.getUsername());
System.out.println("生日:"+user.getBirthday());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}

创建类型转换器

StrutsTypeContentType类是抽象类,定义了两个抽象方法,用于不同的转换方向

1.public Object convertFromString(Map context, String[] values, Class toType):将一个或多个字符串值转换为指定的类型

2.public String convertToString(Map context, Object object):将指定对象转化为字符串

如果继承StrutsTypeContentType类编写自定义类型转换器,需重载以上两个抽象方法。

package cn.strutstypeconverter;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; import com.opensymphony.xwork2.conversion.TypeConversionException; public class DateConverter extends StrutsTypeConverter{
//支持转换的多种日期格式,可增加时间格式
private final DateFormat[] dfs={
new SimpleDateFormat("yyyy年MM月dd日"),
new SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("MM/dd/yy"),
new SimpleDateFormat("yyyy.MM.dd"),
new SimpleDateFormat("yy.MM.dd"),
new SimpleDateFormat("yyyy/MM/dd")
}; /**
* 将指定格式字符串转换为日期类型
*/
@Override
public Object convertFromString(Map context, String[] values, Class toType) {
String dateStr=values[0]; //获取日期的字符串
for (int i = 0; i < dfs.length; i++) { //遍历日期支持格式,进行转换
try {
return dfs[i].parse(dateStr);
} catch (Exception e) {
continue;
}
}
//如果遍历完毕后仍没有转换成功,表示出现转换异常
throw new TypeConversionException();
} /**
* 将日期转换为指定的字符串格式
*/
@Override
public String convertToString(Map context, Object object) {
Date date=(Date) object;
//输出格式是yyyy-MM-dd
return new SimpleDateFormat("yyyy-MM-dd").format(date);
} }

Struts2提供了两种方式配置转换器

1.应用于全局范围的类型转换器

在src目录创建xwork-conversion.properties

java.util.Date=cn.strutstypeconverter.DateConverter

2.应用于特定类的类型转换器

在特定类的相同目录下创建一个名为ClassName-conversion.properties的属性文件

user.birthday=cn.strutstypeconverter.DateConverter

配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<!-- login指定的Action -->
<action name="login" class="cn.action.LoginAction">
<result name="success">
success.jsp
</result>
<result name="input">
index.jsp
</result>
</action>
</package>
</struts>

开发输入与展示页面

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
</head> <body>
<!-- 错误信息 -->
<s:fielderror></s:fielderror>
<!-- 表单的提交 -->
<s:form action="login" method="post" namespace="/">
<div class="infos">
<table class="field">
<tr><td>用户名:<s:textfield name="user.username" /></td>
</tr>
<tr><td>年龄:<s:password name="user.age"/></td> </tr>
<tr><td>生日:<s:textfield name="user.birthday"/> </td>
</tr>
<tr><td><s:submit type="submit" value="提交"/></td></tr>
</table> </div>
</s:form>
</body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
</head> <body>
<h1>成功</h1>
<s:property value="user.birthday"/>
<s:date name="user.birthday" format="yyyy年MM月dd日"/>
</body>
</html>

效果展示:

Struts2 日期类型转换的更多相关文章

  1. Struts2日期类型转换

    针对日期类java.util.Date进行类型转换,要求客户端使用"yyyy-MM-dd","yyyy/MM/dd"中的任意一种输入,并以"yyyy- ...

  2. struts2 jsp提交日期类型转换及国际化实现

    概述:下面通过jsp提交输入注册信息信息,同时完成过程文件国家化问题演示说明.[注册日期转换用注解方式实现] 工程截图: 注册页面jsp文件: <%@ page language="j ...

  3. Struts2自定义类型转换,和处理类型转换错误

    Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...

  4. 关于Struts2的类型转换详解

    详细出处参考:http://www.jb51.net/article/35465.htm 一.类型转换的意义 对于一个智能的MVC框架而言,不可避免的需要实现类型转换.因为B/S(浏览器/服务器)结构 ...

  5. Struts2的类型转换机制

    Struts2的类型转换机制 在基于HITP 协胆的Web 应用中,客户端〈浏览器〉和服务器之间传输的都是字符串形式的数据,换句话说,服务器接收到的用户数据只能是字符串或字符数组, 但在服务器端的Ja ...

  6. (十二)struts2的类型转换

    所有的MVC框架,都属于表现层的解决方案,都需要负责收集用户请求参数,并将请求参数传给应用的控制器组件. 这时问题出现了,所有的请求参数都是字符串类型数据,因此MVC框架必须具备将这些字符串请求参数转 ...

  7. Struts2的类型转换

    Struts2的类型转换 类型转换的作用: HTTP请求都是字符串类型,需要把这些字符串类型转化成相应的数据类型,使得Web应用的控制组件可以使用. 1.內建的类型转换器 Struts2可以完成大多数 ...

  8. [转]SpringMVC日期类型转换问题三大处理方法归纳

    http://blog.csdn.net/chenleixing/article/details/45190371 前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后台实体类之间日 ...

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

    方法一:实体类中加日期格式化注解 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date receiveAppTime; 方法二: ...

随机推荐

  1. 【团队项目选题】自选项目:桌游APP

    由于我们团队的黄金点游戏结果是第二名,按理说是一定能选到一个自选项目的,所以以下只列出我们选择的自选项目 自选项目名称 桌游APP   暂定 (名字还没想好) 项目大致介绍 此APP集成了多种桌游,主 ...

  2. 优化php代码 - 字符串echo输出 逗号也可作php连接符

    2016年12月12日10:00:16 ====================== 网页访问速度的提升,是可以通过代码的优化来实现的.代码的优化,并不是说代码越少越好,而是主要看代码的运行能力和执行 ...

  3. hibernate-criteria查询(二)

     Restrictions 类的作用是什么? Criteria 接口没有 iterate() 方法. Criteria 查询如何对查询结果排序.分页? Criteria 查询如何实现关联? ...

  4. HashMap Hasptable的区别

    HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable.可能你觉得HashTable很好用,为什么不用呢? ...

  5. Shell入门教程:Shell函数的返回值

    shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...

  6. Linux mkdir 创建文件夹命令

    介绍: 该命令创建指定的目录名,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录 语法: mkdir [-m] [-p] 目录名 选项介绍: -m: 对新建目录设置 ...

  7. 使用ajax技术实现txt弹出在页面上

    使用ajax技术实现txt弹出在页面上   使用ajax技术实现点击按钮,将TXT文本里的内容通过弹出框显示到页面上 /*事件会在页面加载完成后触发.*/ <script> window. ...

  8. linux各目录的作用

  9. BZOJ 1923: [Sdoi2010]外星千足虫

    Description 给出几个异或方程组求解,\(n \leqslant 2000\) Sol 高斯消元. 直接消元就行,遇到自由元就直接输出,同时记录一下用到的最高行数. 复杂度不科学就可以用 b ...

  10. Cannot find the Word template:WordToRqm.dot

    方案一: 如果你的word中没有“开发工具”,就在“选项”中找到“自定义功能区”,右侧列表中找到“开发工具”,添加. 转到“开发工具”选项卡,com加载项,里面有个关于Powerdesigner的,反 ...