Struts2自定义类型转换器分为局部类型转换器和全局类型转换器java
(1)局部类型转换器
若是页面传来一个参数reg.action?birthday=2010-11-12到后台action,而后属性用date类型是能够接收到的,可是若是传的是20101112这样类型的字符串,用date类型是获取不到,而且会出现错误的,struts2提供了一种类型转换器供咱们使用。app
如下为局部类型转换器的开发步骤jsp
a.首先要写一个类来继承StrutsTypeConverteride
b.而后覆盖convertFromString(),convertToString()这个方法,在里面进行数据转型 post
c.在action类所在的包下放置ConversionAction-conversion.properties文件,ConversionAction是类名,后面的-conversion.properties是固定的写法,
如:ConversionAction-conversion.propertiesthis
d.Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)spa
如:date=cn.happy.conversion.DateConversioncode
建立ConversionAction类orm
public class ConversionAction extends ActionSupport { private Date date; @Override public String execute() throws Exception { return SUCCESS; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; }
编写自定义转换器代码xml
public class DateConversion extends StrutsTypeConverter { private static final List<SimpleDateFormat> list=new ArrayList<SimpleDateFormat>(); static { list.add(new SimpleDateFormat("yyyy-MM-dd")); list.add(new SimpleDateFormat("yyyy年MM月dd日")); list.add(new SimpleDateFormat("yyyy/MM/dd")); list.add(new SimpleDateFormat("yyyy.MM.dd")); } public Object convertFromString(Map map, String[] strings, Class aClass) { //获取日期的字符串 String date=strings[0]; for(SimpleDateFormat item:list){ try { //把String类型转为Date Date parse = item.parse(date); return parse; } catch (ParseException e) { continue; } } //若是遍历完毕后扔没有转换成功,代表出现转换异常 throw new TypeConversionException(); } public String convertToString(Map map, Object obj) { Date date=(Date)obj; //输出格式 return new SimpleDateFormat("yyyy-MM-dd").format(date); } }
jsp页面代码
<form action="conversion" method="post"> 日期<input name="date"> <input type="submit" value="提交"> </form>
struts.xml配置
<action name="conversion" class="cn.happy.action.ConversionAction" > <!--转换失败,进入login.jsp页面--> <result name="input">login.jsp</result> <result name="success">sucess.jsp</result> </action>
(2)全局类型转换器
若是业务需求全部的日期都要转换,则能够使用全局类型转换器,只要在src根目录下面放置xwork-conversion.properties文件,而且properties文件中的内容为:
待转换的类型=类型转换器的全类名
如
java.util.Date=cn.happy.conversion.DateConversion