Struts2笔记——类型转换
概述
* 在 struts2 中, 把请求参数映射到 action 属性的工作由 Parameters 拦截器负责, 它是默认的 defaultStack 拦截器中的一员. Parameters拦截器可以自动完成字符串和基本数据类型之间转换.
===================================
接收请求参数
采用基本类型接收请求参数
在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。
java.util.Date类型的属性可以接收格式为yyyy-MM-dd的请求参数值。但如果我们需要接收格式为yyyyMMdd的请求参数,我们必须定义类型转换器,否则struts2无法自动完成类型转换。
===================================
定制类型转换器
* 自定义类型转化器必须实现ongl.TypeConverter 接口或对这个接口的某种具体实现做扩展
===================================
配置自定义类型转换器
在应用程序里使用一个自定义的类型转换器之前, 必须先对它进行配置.
这种配置既可以基于字段,也可以基于类
-------------------
基于字段配置(局部): 可以为某个动作的各个属性分别制定一个自定义的转换器.
1. 创建一个属性文件: ActionClassName-conversion.properties, 该文件需和相对应的动作类(Action)放在同一个目录,ActionClassName是Action的类名,后面的-conversion.properties是固定写法.在properties文件中的内容为:
属性名称=类型转换器的全类名
对于本例而言,文件的名称应为UserAction- conversion.properties
2. 编辑属性文件:
createTime=cn.itcast.converter.DateConverter
------------------
基于类配置(全局):
* 在 WEB-INF/classes/ 目录下创建 xwork-conversion.properties 文件.
* 在properties文件中的内容为:
待转换的类型=类型转换器的全类名
* 对于本例而言, xwork-conversion.properties文件中的内容为:
java.util.Date= cn.itcast.converter.DateConverter
===================================
类型转换与复杂对象配合使用
很多时候, 需要把表单字段映射到多个对象的不同属性上
form 标签可以被映射到一个属性的属性.
===================================
类型转换与Collection配合使用
* Struts 还允许填充 Collection 里的对象, 这常见于需要快速录入批量数据的场合