`

Struts2 part 5:类型转换器

 
阅读更多

 

 

1、实现TypeConverter接口,实现

convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object target, java.lang.reflect.Member member, java.lang.String propertyName, java.lang.Object value, java.lang.Class toType) 

 2、继承DefaultTypeConverter类,覆写

convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object value, java.lang.Class toType) 

 3、继承StrutsTypeConverter,覆写

//请求封装
convertFromString(java.util.Map context, java.lang.String[] values, java.lang.Class toClass)  
//数据回显 
convertToString(java.util.Map context, java.lang.Object o) 

 

类型转换是双向,请求<--->回显,一继承DefaultTypeConverter类为例,写一个日期类型的转换器

jsp

<form action="${pageContext.request.contextPath }/demo05/param6.action" method="post">
		日期<input type="text" name="date" /><br/>
		 <input type="submit" value="提交" />
	</form>

 action

public class ParamAction6 extends ActionSupport {
	private Date date;

	@Override
	public String execute() throws Exception {
		System.out.println(date);
		return NONE;
	}

	public Date getDate() {
		return this.date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

}

 转换器

public class DateConvert extends DefaultTypeConverter {
	@Override
	public Object convertValue(Map<String, Object> context, Object value, Class toType) {
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		// 请求参数封装
		if (Date.class == toType) {
			String[] val = (String[]) value;
			String dateVal = val[0];
			try {
				return dateFormat.parse(dateVal);
			} catch (ParseException e) {
				e.printStackTrace();
			}
		} else {
			// 回显数据封装
			Date date = (Date) value;
			return dateFormat.format(date);
		}
		return null;
	}
}

 struts配置

	<action name="param6" class="demo05.ParamAction6">
		</action>

 注册转换器

1、局部注册,针对特定属性,在action所在包装件“ParamAction6-conversion.properties”文件,“Action类名+-conversion.properties”,内容为

date = demo05.DateConvert

 date为Action中的属性名,转换器只在本Action有效

2、全局注册,针对特定类型,在src下创建“xwork-conversion.properties”,内容为

java.util.Date = demo05.DateConvert

 这种方式针对所有java.util.Date类型都有效

 

类型转换中的错误处理流程



 

 在Action中抛出异常

public class DateConvert extends DefaultTypeConverter {
	@Override
	public Object convertValue(Map<String, Object> context, Object value, Class toType) {
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		// 请求参数封装
		if (Date.class == toType) {
			String[] val = (String[]) value;
			String dateVal = val[0];
			try {
				return dateFormat.parse(dateVal);
			} catch (ParseException e) {
				throw new RuntimeException(e);
			}
		} else {
			// 回显数据封装
			Date date = (Date) value;
			return dateFormat.format(date);
		}
	}
}

 jsp

<%@ taglib uri="/struts-tags"  prefix="s"%>
	<s:fielderror></s:fielderror>
	<form action="${pageContext.request.contextPath }/demo05/param6.action" method="post">
		日期<input type="text" name="date" /><br/>
		 <input type="submit" value="提交" />
	</form>

 配置

		<action name="param6" class="demo05.ParamAction6">
			<result name="input">/demo05/params.jsp</result>
		</action>

 这是页面出现的错误信息为英文,通过设置properties文件,将错误信息转换为中文,创建“ParamAction6.properties”,Action类名.properties,内容为invalid.fieldvalue.属性名= 错误信息

 invalid.fieldvalue.date =格式为年-月-日

 properties中不能有中文需要转码

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 94.6 KB
分享到:
评论

相关推荐

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    7.3.1 对自定义的类型转换器进行配置 126 7.3.2 自定义的类型转换器示例 127 7.4 扩展StrutsTypeConverter类 130 7.5 与复杂对象配合使用 134 7.6 与Collection配合使用 137 7.7 与Map配合使用 142 7.8 小结 145 第...

    JAVA WEB典型模块与项目实战大全.part2(第二卷)

    第20章 数据格式转换(Struts 2.X+Hibernate+Dom4j) 第21章 用户维护功能(Struts 2.X+iBATIS) 第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2....

    Java高手真经_应用框架卷_Java_Web核心框架.part1.rar

     表现层框架struts 2:讲解struts 2的入门配置、核心组件、标签库、国际化、数据校验、转换器、拦截器,并分别实现与hibernate、ibatis持久层框架的集成开发。  业务层框架spring:讲解spring的入门配置与ioc容器...

    Java高手真经_应用框架卷_Java_Web核心框架.part2.rar

     表现层框架struts 2:讲解struts 2的入门配置、核心组件、标签库、国际化、数据校验、转换器、拦截器,并分别实现与hibernate、ibatis持久层框架的集成开发。  业务层框架spring:讲解spring的入门配置与ioc容器...

    JAVA WEB典型模块与项目实战大全.part4

    第20章 数据格式转换(Struts 2.X+Hibernate+Dom4j) 第21章 用户维护功能(Struts 2.X+iBATIS) 第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2....

    JAVA WEB典型模块与项目实战大全.part3(第三卷)

    第20章 数据格式转换(Struts 2.X+Hibernate+Dom4j) 第21章 用户维护功能(Struts 2.X+iBATIS) 第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2....

    JAVA WEB典型模块与项目实战大全.part1(第一卷)

    第20章 数据格式转换(Struts 2.X+Hibernate+Dom4j) 第21章 用户维护功能(Struts 2.X+iBATIS) 第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2....

    Java高手真经_应用框架卷_Java_Web核心框架.part3.rar

     表现层框架struts 2:讲解struts 2的入门配置、核心组件、标签库、国际化、数据校验、转换器、拦截器,并分别实现与hibernate、ibatis持久层框架的集成开发。  业务层框架spring:讲解spring的入门配置与ioc容器...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    Spring in Action(第二版 中文高清版).part2

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    Spring攻略(第二版 中文高清版).part2

    6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...

    Spring in Action(第二版 中文高清版).part1

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    8.3.3 关联转换器与UI Component实例 8.3.4 转换器的生命周期 8.3.5 定制转换器 8.4 Faces验证系统 8.4.1 Long Range Validator 8.4.2 Double Range Validator 8.4.3 Length Validator 8.4.4 必需的工具Required ...

    UML和模式应用(架构师必备).part02.rar

    第5章 进化式需求 5.1 定义:需求 5.2 进化式需求与瀑布式需求 5.3 寻找需求可以采用的方法 5.4 需求的类型和种类 5.5 UP制品如何组织需求 5.6 本书是否包含这些制品的示例 5.7 参考资料 第6章 用例 6.1 ...

Global site tag (gtag.js) - Google Analytics