`

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
分享到:
评论

相关推荐

    Struts2 part6:数据校验

    这篇博客“Struts2 part6:数据校验”可能详细介绍了如何在Struts2中实现对用户提交的数据进行验证。 Struts2的数据校验分为两个主要部分:客户端校验和服务器端校验。客户端校验通常使用JavaScript或者HTML5的表单...

    struts2学习笔记.doc

    - **上传原理**:Struts2利用MultipartResolver实现文件上传功能。 - **配置与实现**: - 在`struts.xml`中配置上传相关的参数。 - 实现Action类中文件上传的具体逻辑。 **5.2 文件下载** - **下载原理**:Struts...

    struts2 in action

    Type Conversion是Struts 2处理表单数据和模型对象之间类型转换的关键机制,书中会解释如何自定义类型转换器以满足特定需求。 Part 3可能涉及视图层的构建,包括JSP、FreeMarker或Velocity等模板技术的使用,以及...

    struts2实现多文件同时上传

    可以使用Struts2的拦截器(Interceptor)进行预处理,例如`SizeValidator`和`FileSizeValidator`,或者自定义拦截器实现验证逻辑。 7. **返回响应**:上传完成后,Action可以返回一个结果,告诉用户文件是否成功...

    struts2 文件上传和下载

    - **Action拦截器**: Struts2的FileUploadInterceptor处理文件上传,它会自动将文件数据转换为`java.io.File`或`org.apache.struts2.dispatcher.multipart.UploadedFile`对象。 - **处理上传**: Action方法可以...

    Struts2上传文件源码

    当用户提交包含文件的表单时,Struts2会将这些文件数据转换为`FileItem`对象,并将它们存储在一个`List&lt;FileItem&gt;`中,然后我们可以遍历这个列表,对每个文件进行相应的处理。 为了实现文件上传,我们首先需要在...

    深入浅出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 第...

    Struts_2.0从入门到精通

    Struts2.0内置了一系列的转换器,如默认转换器、日期转换器等,同时也支持自定义转换器,满足各种复杂类型的转换需求。通过转换器,可以有效防止数据类型不匹配导致的异常,并提高数据处理的效率。 六、Struts2.0中...

    将Struts应用迁移到Struts 2(二)

    【Struts 1 to Struts 2 Migration (Part 2)】 在上一部分中,我们已经探讨了Struts 2框架的基本结构、请求处理流程、配置方式以及与Struts 1的区别。理解这些核心概念是顺利迁移应用的关键。在本文中,我们将深入...

    struts笔记

    Struts 2框架通过FileUpload拦截器实现了文件上传的功能。该拦截器主要负责解析HTTP请求中的multipart/form-data格式的数据,并将其转换为可操作的对象。 - **FileUpload拦截器的工作原理**:当接收到包含文件上传...

    servlet上传 struts下载例子

    5. **Struts配置**:在Struts 1.2中,你需要在struts-config.xml文件中定义Action,配置Action的forward,指向处理下载的Servlet或JSP。同时,可能还需要配置拦截器(interceptors)来处理表单验证和其他业务逻辑。 ...

    精通Java Web整合开发(Jsp+Ajax+Struts+Hibernate)(第2版).part1

    综上所述,《精通Java Web整合开发(Jsp+Ajax+Struts+Hibernate)(第2版)》这本书主要介绍了如何使用JSP、Ajax、Struts、Hibernate以及Spring等技术进行Web应用的开发,涵盖了这些技术的基本概念、核心功能及实际应用...

    struts1实现图片上传

    Struts1是一个经典的Java Web框架,它为开发者提供了一种模型-视图-控制器(MVC)架构,便于构建可维护、结构清晰的Web应用程序。在这个"struts1实现图片上传"的实践中,我们将深入探讨如何使用Struts1来处理图片...

    无中文乱码的Struts上传下载(任意文件上传)

    Struts框架是一款经典的Java Web开发框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在处理文件上传和下载时,Struts提供了一套完善的机制,但有时会遇到中文乱码的问题。本教程将详细介绍如何在Struts中...

    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....

Global site tag (gtag.js) - Google Analytics