写了很多天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类型的属性来获取页面的信息。。欲哭无泪