【转载】Struts2学习总结 ---- 数据类型转换器Converter

转换器 converter
Struts2支持在自动将在前台请求过来的数据转换成相应的java对象;它是通过一个一个的类型转换器实现的.
具体的内置类型转换器有:
 转制换器类型 功能
 String将int、long、double、boolean、String类型的数组或java.util.Date类型转换成字符串
 boolean/Boolean 在字符串与布尔值之间进行转换
 charCharacter 在字符串与字符之间进行转换
 int/Integer、float/Float
 long
/Long、double/Double
 在字符串与数值类型数据之间进行转换
 Date 在字符串与日期类型间进行转换.具体输入输出格式与Local相关
 数组和集合 在字符串与数组对象集合对象之间进行转换

多值类型请求参数的传递:
设值
1.数组:

<s:form action="ArrayTest.action">
<s:textfield name="numbers[0]" label="数字" />
<s:textfield name="numbers[1]" label="数字" />
<s:textfield name="numbers[2]" label="数字" />
<s:submit></s:submit>
</s:form>

上面这种方式中所需的数据,要做用户必填处理,否则会出错(数组的特性),选填数据用下面的方式

<s:form action="ArrayTest.action">

<s:checkbox name="hobbys" label="玩游戏" value="game" />
<s:checkbox name="hobbys" label="看电影" value="film" />
<s:checkbox name="hobbys" label="看书" value="book" />
<s:submit></s:submit>
</s:form>


2.集合

<!-- 对应Action中有 List<User> user 集合; 此处只取单个属性,如果取多个属性,则每个属性分别在对象中,对象的其它属性是null,得不到实际想要的 -->

<s:form action="ArrayTest.action">
<s:textfield name="user.name" label="姓名" />
<s:textfield name="user.name" label="姓名" />
<s:textfield name="user.name" label="姓名" />
<s:submit></s:submit>
</s:form>

上面的方式就能接收到一个用三个用户的集合,此时只有name有值,如果还需要实体的其它属性就得用下面的方式

<!-- 取三个对象的集合,每个对象有 name,age属性 -->

<s:form action="ArrayTest.action">
<s:textfield name="user[0].name" label="姓名"/>
<s:textfield name="user[0].age" label="年龄" />

<s:textfield name="user[1].name" label="姓名" />
<s:textfield name="user[1].age" label="年龄" />

<s:textfield name="user[2].name" label="姓名" />
<s:textfield name="user[2].age" label="年龄" />
<s:submit></s:submit>
</s:form>

取值 
1.用 <s:iterator >遍历: 

<s:iterator value="hobbies" >

<s:property />

</s:iterator>


2.用  属性名[index] 的方式取列表与数中的某一个元素

userList[1].name array[2]

3.用  属性名[key]  的方式取Map中的某一个元素

userMap['userA'].name

4.能用 size  length 来访问集合的长度

userList.size userArray.length userMap.size


自定义转换器
1.创建自定义转换器:
一般来说,者是继承  org.apache.struts2.util.StrutsTypeConverter 抽象类,重写两个抽象方法:
  • public Object convertFromString(Map context, String[] values, Class toType):将一个或多个字符串转换成指定类型.将指定类型转换成字符串, context 是OGNL上下文对象,values是要转换的对象字符串,toType是要转换的目标类型
  • public String convertToString(Map context, Object obj): 将指定类型转换成字符串, context 是OGNL上下文对象,obj是要转换的对象
2.指定要起作用的范围
全局:src目录创建xwork-conversion.properties
转换类全名=类型转换器类全名
特定类:在特定类的相同目录下创建一个名为ClassName-conversion.properties的属性文件
转换类全名=类型转换器类全名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值