快速业务通道

Unmi的Struts2学习笔记(七) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Unmi的Struts2学习笔记(七)

时间:2011-09-04 Unmi.cc 隔叶黄莺

小时候,大人们的谆谆教诲:做人要诚实。并真以此为做人原则。长大后才知 道何谓社会。譬如530,再如艳照门,风声乍起之时,有人辟谣;直东窗事发后, 道貌岸然者有之、恬不知耻者亦有之。原本成功就不属于规矩之人。纵观,无玄 武门之血腥,何来一代宗皇;老毛若不有理而造反,一味守规矩,或为一介书匠 耳。雅各一碗红豆汤便谋得以扫的长子权,再行骗去亚伯拉罕的祝福,并顺理成 章让耶和华与他同在,可见上帝之“贤明”?。高等教育中有一句,顺利的是骗 子,倒霉的是傻子,我是?不还有企业家的原罪吗?有时竟被社会所放任?

1. 前面讲的自定义类型转换器是基于 OGNL 的 DefaultTypeConverter 类并 实现 convertValue() 方法,两个转换方向的逻辑都写在这一个方法中。而 Struts 2 为我们提供了一个 DefaultTypeConverter 的抽象子类 StrutsTypeConverter 来继承,并实现其中两个抽象方法 convertFromString() 和 convertToString(),这要简单易懂。对比 Struts 1 的转换器是要实现 org.apache.commons.beanutils.Converter 接口,以及它的 convert() 方法的 。

2. 注意,上面的 convertFromString() 的第二个参数是一个字符串数组,所 以可为请求的数组(如请求串为 ?u=1&u=2&u=3)定义转换器,Action 中 相应的属性就应为数组或 List,这一方法的返回值也该为相应的类型(数组或 List,要通过第三个参数 toClass 来判断是返回数组还是 List 了)。

3. 字符串(如 "user,pass") 转换成 Action 中的复合属性(如 User user) 前面是自定了类型转换器。除此之外,还可以 Struts 2 内置的 OGNL 表达式, 更简单的转换,不用写转换器。例如,你的 Action 有属性 User user,只要在 jsp 页面的输入框命名为 user.name 和 user.pass 即可:

<input type="text" name="user.name"/>或用标签:<s:textfield name="user.name" label="用户名"/>

<input type="text" name="user.pass"/> 或用标签: <s:textfield name="user.pass" label="密 码"/>

提交后,Struts 2 即会帮你构造 User 对象(user = new User()),并赋上属 性值(user.setName(),user.setPass()),最后 user 对象赋给 Action (xxxAction.setUser(user))。所以要明白有三个必备的东西:

1) User 要用一个默认构造方法 2) User 要有对应 name 和 pass 的设置方 法 setName()和 setPass()3) Action 要有 user 属性的设置方法 setUser(), getUser() 也是要的,至于功用后面能看到。

其实在 Struts 1 中也有这种用法,不过那是在 BeanUtils 中实现的。

4. 如果 Action 中的属性是 Map<String, User> users; 那么与此对 应的表单写法就是:(用标签来写)

<s:textfield name="users[''one''].name" label="第一个用户名"/>    <s:textfield name="users[''one''].name" label="第一个密码"/>    <s:textfield name="users[''two''].name" label="第二个用户名"/>    <s:textfield name="users[''two''].name" label="第二个密码"/>

应该不难想像,这个表单提交后,users 中存储的是什么吧!

如果是对于 Action 中的 List 属性,List<User> users; 那么与此 对应的表单写法就是:

<s:textfield name="users[0].name" label="第一个用户名"/>
   <s:textfield name="users[0].name

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号