Struts2日期类型转换
针对日期类java.util.Date进行类型转换,要求客户端使用“yyyy-MM-dd”,“yyyy/MM/dd”中的任意一种输入,并以“yyyy-MM-dd”的格式输出,该类型转换应用于全局范围
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
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类编写自定义类型转换器,需重载以上两个抽象方法。
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日期类型转换的更多相关文章
- Struts2 日期类型转换
针对日期类java.util.Date进行类型转换,要求客户端使用"yyyy-MM-dd","yyyy/MM/dd"中的任意一种输入,并以"yyyy- ...
- struts2 jsp提交日期类型转换及国际化实现
概述:下面通过jsp提交输入注册信息信息,同时完成过程文件国家化问题演示说明.[注册日期转换用注解方式实现] 工程截图: 注册页面jsp文件: <%@ page language="j ...
- Struts2自定义类型转换,和处理类型转换错误
Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...
- 关于Struts2的类型转换详解
详细出处参考:http://www.jb51.net/article/35465.htm 一.类型转换的意义 对于一个智能的MVC框架而言,不可避免的需要实现类型转换.因为B/S(浏览器/服务器)结构 ...
- Struts2的类型转换机制
Struts2的类型转换机制 在基于HITP 协胆的Web 应用中,客户端〈浏览器〉和服务器之间传输的都是字符串形式的数据,换句话说,服务器接收到的用户数据只能是字符串或字符数组, 但在服务器端的Ja ...
- (十二)struts2的类型转换
所有的MVC框架,都属于表现层的解决方案,都需要负责收集用户请求参数,并将请求参数传给应用的控制器组件. 这时问题出现了,所有的请求参数都是字符串类型数据,因此MVC框架必须具备将这些字符串请求参数转 ...
- Struts2的类型转换
Struts2的类型转换 类型转换的作用: HTTP请求都是字符串类型,需要把这些字符串类型转化成相应的数据类型,使得Web应用的控制组件可以使用. 1.內建的类型转换器 Struts2可以完成大多数 ...
- [转]SpringMVC日期类型转换问题三大处理方法归纳
http://blog.csdn.net/chenleixing/article/details/45190371 前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后台实体类之间日 ...
- SpringMVC日期类型转换问题三大处理方法归纳
方法一:实体类中加日期格式化注解 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date receiveAppTime; 方法二: ...
随机推荐
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- 简单入门canvas - 通过刮奖效果来学习
一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- $.type 怎么精确判断对象类型的 --(源码学习2)
目标: var a = [1,2,3]; console.log(typeof a); //->object console.log($.type(a)); //->ar ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- 普通程序员如何转向AI方向
眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...
- css3圆形百分比进度条的实现原理
原文地址:css3圆形百分比进度条的实现原理 今天早上起来在查看jquery插件机制的时候,一不小心点进了css3圆形百分比进度条的相关文章,于是一发不可收拾,开始折腾了... 关于圆形圈的实现,想必 ...
- EC笔记:第4部分:22、所有成员都应该是private的
EC笔记:第4部分:22.所有成员都应该是private的 更简单的访问 用户不用记得什么时候该带上括号,什么时候不用带上括号(因为很确定的就要带上括号) 访问限制 对于public的成员变量,我们可 ...
- ComponentPattern (组合模式)
import java.util.LinkedList; /** * 组合模式 * * @author TMAC-J 主要用于树状结构,用于部分和整体区别无区别的场景 想象一下,假设有一批连锁的理发店 ...
- springMVC初始化绑定器
单日期 在处理器类中配置绑定方法 使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型 propertyEditor为属性编辑器,此处我们选用 CustomDateEd ...