struts局部、全局类型转换器
第01步:编写bean
package com.self.bean; import java.util.Date; public class User { private Date birthday = null; public Date getBirthday() { System.out.println("获得-User:" + birthday); return birthday; } public void setBirthday(Date birthday) { System.out.println("设置-User:" + birthday); this.birthday = birthday; } }
第02步:编写action类:
package com.self.action; import com.self.bean.User; public class Transform { private User lilan; public Transform() { } public String showdata() { return "tsuccess"; } public User getLilan() { return lilan; } public void setLilan(User lilan) { this.lilan = lilan; } }
第03步:编写转换器类
package com.self.conversion; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; /** * 自定义转换器:DataTransform-conversion.properties */ /* 01--继承DefaultTypeConverter:默认转换器 */ public class DataTransform extends DefaultTypeConverter { /* 02-- 重写convertValue方法 */ @Override public Object convertValue(Map<String, Object> context, Object value, Class toType) { System.out.println("执行转换"); /*03--调用SimpleDateFormat类方法进行格式转换*/ /*04--以action类名加“-conversion.properties”为名建立properties文件 * :Transform-conversion.properties * 再加入键值对:转换类型=转换器地址 * :birthday=com.self.action.DataTransform */ SimpleDateFormat dataFormat=new SimpleDateFormat("yyyyMMdd"); try { if(toType==Date.class){//目标类型为Date类型 String[] params=(String[]) value;//接收的参数为数组类型,Request.getParameterValues(); System.out.println("目标:Date:"+params[0]); return dataFormat.parse(params[0]); }else if(toType==String.class){//目标类型为String类型 Date date=(Date) value; System.out.println("目标:String:"+date); return dataFormat.format(date); } } catch (Exception e) { e.printStackTrace(); } return null; } }
第04步:编写property文件
property文件:放在action同级目录
property命名:Transform-conversion.properties(action类名-conversion.properties)
lilan.birthday=com.self.conversion.DataTransform
lilan:指的是action里面的对象
lilan.birthday:对象.属性=转换器
第05步:配置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> <constant name="struts.action.extension" value="do"/> <package name="transform" namespace="/" extends="struts-default"> <action name="list_*" class="com.self.action.Transform" method="{1}"> <result name="tsuccess"> /outdata.jsp </result> </action> </package> </struts>
第06步:编写数据输入界面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <body> <form action="list_showdata.do"> 日期:<input name="lilan.birthday" type="text" value="20150120" /> <BR> 输入格式01为:20150120 <BR> 输入格式02为:2015-01-20 <BR> <input type="submit" value="提交"> </form> </body> </html>
第07步:编写数据显示界面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <body> ${lilan.birthday } </body> </html>
/*****************以上是局部类型转换器,以下是全局类型转换器********************/
第01步:将property文件重命名为(xwork-conversion.properties)
第02步:将property文件移到src目录下
第03步:property配置:(这里代表的是,工程下所有Date类型,都使用这个转换器)
java.util.Date=com.self.conversion.DataTransform