xie 写道
集合支持不向下兼容。XWorkList已经是@deprecated,用它就错,还不如直接删除掉。在webwork2.2中,它需要为集合另外配置一个conversion.properties文件。真不明白,这样有什么优点?
这种新的整合方式,实际上只是解决了针对容器赋值,不需要依赖XWork的辅助类这样的一个问题,不过其付出的代价,却是多了一个配置文件,这也让人非常郁闷。好好的类型转化,平白无故多出了一个同package下的配置文件,这也无形中增加了编程的复杂度。
3. 现在,拥抱了泛型和Annotation的年代
实际上,在XWork发展到XWork-2.0.X之后,也开始注重了对泛型和Annotation的支持。所以,容器类型的转化,我们也可以尝试一下使用JDK的新特性来进行,当然这也是目前最为推荐的做法。
下面分别给出使用泛型和Annotation的代码示例:
Html代码
<form method="post" action="/struts-example/ognl-collection-conversion.action">
<input type="text" name="users[0].name" value="aaa" />
<input type="text" name="users[1].name" value="bbb" />
<input type="text" name="users2[0].name" value="ccc" />
<input type="text" name="users2[1].name" value="ddd" />
<input type="text" name="userMap[''user1''].name" value="eee" />
<input type="text" name="userMap[''user2''].name" value="fff" />
<input type="text" name="userMap2[''user3''].name" value="ggg" />
<input type="text" name="userMap2[''user4''].name" value="hhh" />
<input type="submit" value="submit" />
</form>
Struts2中的参数传递(5)
时间:2011-02-04
Java代码
public class OgnlConversionAction extends ActionSupport {
private static final long serialVersionUID = 4396125455881691845L;
private static final Log logger = LogFactory.getLog(Policy.class);
private List<User> users;
@Element(value = User.class)
private List users2;
private Map<String, User> userMap;
@Element(value = User.class)
private Map userMap2;
/* (non-Javadoc)
* @see com.opensymphony.xwork2.ActionSupport#execute()
*/
@Override
public String execute() throws Exception {
// -> aaa
logger.info("users[0].name : " + users.get(0).getName());
// -> bbb
logger.info("users[1].name : " + users.get(1).getName());
// -> ccc
logger.info("users2[0].name : " + ((User)users2.get(0)).getName());
// -> ddd
logger.info("users2[1].name : " + ((User)users2.get(1)).getName());
// -> [user1, user2]
logger.info("userMap.key : " + userMap.keySet());
// -> eee
logger.info("userMap.key = " + "user1" + " : " + "userMap.value(user1''s name) = " + userMap.get("us
|