8
17
2009
0

学艺不精的后果........

 写了很多天struts2的action...不知道怎么的,一直以为action如果有Long的属性,比如private Long customerId;,是无法获得页面上比如<input type="text" name=customerId>传来的id的 ,因为页面上传输过来的都是String类型的 

其实struts2本身就有支持从String到Long/long,Integer/int,Double/double等一系列常用数据类型的类型转换器

甚至对象集合类型的都可以

比如action中的User属性

public class User{

private String username;
private int password;
private Long userid;

//省略get和set方法
}
action 中可以写成
private List<User> users
或者private Map<String,User> users
对应的输入页面可以写成
用户名<input type="text" name="users[0].username" />
密码<input type="text" name="users[0].password" />
ID<input type="text" name="users[0].userid" />
(对应list)
或者用户名<input type="text" name="users['one'].username" />
密码<input type="text" name="users['one'].password" />
ID<input type="text" name="users['one'].userid" />
(对应map  括号里的是键值)
而对于其他稍复杂的需求,比如将一个输入的字符串 xx,xx封装成point(坐标)对象,则需要定制类型转换器  实现StrutsTypeConvertor借口以及稍微配置下就可以了 网上关于这个的帖子还是很多
 
可怜我以前一直用String类型的属性来获取页面的信息。。欲哭无泪
 

 

Category: Struts2 | Tags: struts2 | Read Count: 964

Login *


loading captcha image...
(type the code from the image)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com