- Struts 2.x权威指南
- 李刚编著
- 319字
- 2022-07-20 11:11:58
4.3.2 使用OGNL转换成List集合
如果把LoginAction中的users属性改为List<User>,也就是如果需要Struts 2将用户请求参数封装成List属性,一样可以利用OGNL表达式做到——可以通过索引来指定要将请求参数转换成List的哪个元素。下面JSP页面里表单元素的name属性可以实现将HTTP请求参数转换成List属性。
程序清单:codes\04\4.3\ognlObjectList\WEB-INF\content\loginForm.jsp
<form action="login.action" method="post"> <table align="center" width="360"> <caption><h3>直接封装成对象List</h3></caption> <tr> <td>第一个用户名:<input type="text" name="users[0].name"/></td> </tr> <tr> <td>第一个密码:<input type="text" name="users[0].pass"/></td> </tr> <tr> <td>第二个用户名:<input type="text" name="users[1].name"/></td> </tr> <tr> <td>第二个密码:<input type="text" name="users[1].pass"/></td> </tr> <tr align="center"> <td><input type="submit" value="转换"/> <input type="reset" value="重填" /></td> </tr> </table> </form>
上面JSP页面中定义表单域时指定第一个文本域的name为users[0].name,Struts 2将会把该文本域所代表的请求参数转换成users集合第一个元素的name属性。
类似地,如果想输出Action中List属性里各集合元素的属性值,则可通过在集合属性后增加索引来访问,如下面代码片段所示。
程序清单:codes\04\4.3\ognlObjectList\WEB-INF\content\welcome.jsp
第一个User实例的用户名为:<s:property value="users[0].name"/><br /> 第一个User实例的密码为:<s:property value="users[0].pass"/><br /> 第二个User实例的用户名为:<s:property value="users[1].name"/><br /> 第二个User实例的密码为:<s:property value="users[1].pass"/><br />