类型转换

类型转换的意义:

MVC框架,属于表现层的解决方案。

负责收集用户请求的参数,并将参数传给控制器组件

但所有的请求参数都是字符串类型,而java 为强类型语言

 

 

struts2的内建类型转换器

 

 

局部类型转换器:

在Action范围内使用

定义文件 ActionName-conversion.properties

位置:放置Action 类同目录下

内容: propertyName = 类型转换器

仅仅对某个Action 的属性起作用

properyName:Action类中要进行数据转换的属性名。

类型转换器:负责转换的类(全类名)

 

 

全局类型转换器:

在全局类型内使用

定义文件:xwork-conversion.propertes

位置:src 目录下

内容: propertyName = 类型转换器

对所有Action的特定类型的属性都会生效

propertyName:Action类中要进行数据转换的属性名.(全类名)

类型转换器:负责转换的类(全类名)

 

 

类型转换的错误处理:

conversionError拦截器

Struts2的类型转换器执行转换过程中出现错误,conversionError拦截器负责将错误封装成fileError,并将错误信息放入ActionContext中,并且返回input逻辑视图

 

 

显示的错误信息:

Invalid field value for field “user.age”;

 

 

处理显示的错误信息:

使用国际化资源文件

Xwork.default.invalid.fieldvalue={0}字段类型转换失败!

user.age字段类型转换失败!

 

 

	<form action="doDate.action" method="post">
		时间:<input type="text" name="createDate">
		<input type="submit" value="提交">
	</form>

 

 

java.util.Date=org.cric.convertor.DateConverter

 

 

package org.cric.convertor;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;

public class DateConverter extends StrutsTypeConverter {
	public Object convertFromString(Map context, String[] values, Class toClass) {
		String[] strArray=values[0].split(",");
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR,Integer.parseInt(strArray[0]));
		calendar.set(Calendar.MONTH,Integer.parseInt(strArray[1])-1);
		calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(strArray[2]));
		Date date = calendar.getTime();
		return date;
	}
	public String convertToString(Map context, Object object) {
		if(null!=object){
			Date date = (Date)object;
			SimpleDateFormat formater = new SimpleDateFormat("yyyy,MM,dd");
			return formater.format(date);
		}
		return null;
	}
}

 

 

	创建时间:<s:property value="createDate"/>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值