很多时候,我们在做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.properties,ActionName是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