您的位置:首页 > 编程语言 > Java开发

5.struts2类型转换

2015-03-07 11:38 316 查看
* 在struts2框架中,在对应动作类action中,

声明与页面中表单元素同名的属性,给出对应的set和get方法。

struts2框架就会根据反射机制,获取页面中表单元素的值

* 通过这种机制,struts2框架将页面中字符串类型的值进行转换了,转换成action中声明的类型。

//出生日期:<input type="text" name="createTime"><br>
	private Date createTime;
* 但是struts2不能转换所有类型,像日期类型就不能转换

* 编号在动作类声明的为Integer类型,这里会报错,没有setId(String str)的方法
在配置文件中配置

<result name="input">/converter/error.jsp</result>
* 错误提示:No result defined for action cn.itcast.converter.UserAction and result input

* 配置如果出错的时候,自动转向到错误页面

@Override
	public Object convertValue(Object value, Class toType) {
if(value instanceof java.lang.String[]){
			String [] str = (String[])value;
			if(str[0]!=null&&str[0].length()>0){
				try {
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
					
					return sdf.parse(str[0]);
					
				} catch (ParseException e) {
					/*
					 *  在struts2框架里,自定义的类型转换器,
					 *  如果我们不手动抛出异常,struts2框架只捕获异常,但是并不抛出。
					 *  所以框架就会认为类型转换器转换成功,转向成功页面。
					 */
					throw new RuntimeException(e);
				}
			}
		}

* 传过来的value属性是一个String数组 表单传递有两个name为createTime属性

* 在struts2框架里,自定义的类型转换器

如果我们不手动抛出异常,struts2框架只捕获异常,但是并不抛出。

所以框架就会认为类型转换器转换成功,转向成功页面

两种配置文件写法

1. 与action在同一目录下 命名规则为UserAction-conversion.properties 里面的内容为 createTime=cn.itcast.converter.DateConverter

2. 在src下,命名规则为xwork-conversion.properties 里面的内容为java.util.Date=cn.itcast.converter.DateConverter

从form表单传递过去的是一个集合

员工姓名:<input type="text" name="emps[0].name"><br>
 员工薪水:<input type="text" name="emps[0].salary"><br>
       
      
 员工姓名:<input type="text" name="emps[1].name"><br>
 员工薪水:<input type="text" name="emps[1].salary"><br>
在action中声明为

private Collection<Employee> emps;

* 类型只能声明为Collection类型

<s:fielderror fieldName="createTime"/>
* s:filelderror字段 如果没有fieldName属性 哪个字段出错,就会报哪个字段的错误 如果加了fieldName属性 则只会报指定字段的错误

<constant name="struts.custom.i18n.resources" 
			value="cn.itcast.converter.converter">
	</constant>
* 配置所有资源文件,省略后缀名,如果配置多个资源文件时,用","隔开。不仅是国际化资源文件

类型转换器的错误提示资源文件

<span style="font-size: 12.380952835083px;">xwork.default.invalid.fieldvalue</span>
invalid.fieldvalue.createTime
* 第一个是默认字段 第二个是指定字段
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: