[JavaWeb基础] 013.Struts2 自定义类型转换器

很多时候,我们在做web开发的时候经常要用到时间的转换器Struts2给我们提供了一种类型转换器的接口。下面我们讲讲怎么实现吧。

1.首先我们要定义一个类型转换的类,继承自com.babybus.sdteam.converter.DateTypeConverter

package com.babybus.sdteam.converter;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class DateTypeConverter extends DefaultTypeConverter {
	@SuppressWarnings("unchecked")
	@Override
	public Object convertValue(Map<String, Object> context, Object value, Class toType) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
		try {
			// 当字符串向Date类型转换时
			if (toType == Date.class) { 
				String[] params = (String[]) value;
				return sdf.parseObject(params[0]);
			// 当Date转换成字符串时
			} else if (toType == String.class) { 
				Date date = (Date) value;
				return sdf.format(date);
			}
		} catch (java.text.ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
}

2.在action的同级目录下建立ActionName-conversion.propertiesActionName是aciton的类名

loginDate=com.babybus.sdteam.converter.DateTypeConverter

3.如何调用,请看jsp

<form action="logOn.action" method="post" style="height: 100%">
    <input name="loginDate" value = "20110315 23:34:55" type = "hidden"/>
    <table width="100%" height="100%" cellpadding="0" cellspacing="0" >
	    <tr>
		    <td align="center" valign="middle" />
				<table>
				    <tr><td>用户名:</td><td><input type="text" id = "username" name="username"/></td></tr>
				    <tr><td>密码:</td><td><input type="password" name="password" id = "password" /></td></tr>
				    <tr><td colspan="2" align="center"> <input type="submit" value="登录"/><input type="reset" value="重置"/></td></tr>
			    </table>
		    </td>
	    </tr>
    </table>
</form>

 Action中接收loginDate的类型为Date类型,那么传过去字符串自动转换成Date类型

结语

  • 受益,掌握了Struts2 自定义类型转换器

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 

转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4755927.html

原文地址:https://www.cnblogs.com/superdo/p/4755927.html