Struts2的类型转换器

Struts2的类型转换器


如何实现Struts2的类型转换器?
* 继承StrutsTypeConverter
* 覆盖convertFromString和convertToString

注册类型转换器
* 局部类型转换器,局部类型转换器只对当前Action起作用,需要提供如下配置文件:
MyActionName-conversion.properties,MyActionName指需要使用转换器的Action名称
”-conversion.properties“固定字符串,不能修改。我们AddUserAction类型转换器的配置
文件名称为:AddUserAction-conversion.properties,该配置文件必须和Action放到同一个
目录中,该配置文件的格式为:Action中的属性名称=转换器的完整路径,如:
birthday=com.bjpowernode.struts2.UtilDateConverter
* 全局类型转换器,全局类型转换器可以是所有的Action起作用(同Struts1的类型转换器),
 需要提供如下配置文件:xwork--conversion.properties,该配置文件需要放到src下,该
 配置文件的格式:需要转换的类型完整路径=转换器的完整路径,如:
 java.util.Date=com.bjpowernode.struts2.UtilDateConverter
 
如果全局类型转换器和局部类型转换器同时存在,局部优先


Struts2的标签库就一个,默认以s开头


采用标签读取属性,可以调用转换器的convertToString方法,采用JSTL不会调用 


日期转换器代码

package com.bjpowernode.struts2;

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

import org.apache.struts2.util.StrutsTypeConverter;

public class UtilDateConverter extends StrutsTypeConverter {

	private static final String PATTERN = "yyyy/MM/dd";
	
	//浏览器提交到服务器是调用,将字符串转换成对象
	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		String dateString = values[0];
		SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);
		Date date = null;
		try {
			date = sdf.parse(dateString);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	//服务器向浏览器输出时调用,将某种类型转换成字符串
	@Override
	public String convertToString(Map context, Object o) {
		Date date = (Date)o;
		return new SimpleDateFormat("yyyy年MM月dd日").format(date);
	}

}


posted @ 2015-09-17 19:59  reblue520  阅读(243)  评论(0编辑  收藏  举报