| « | August 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:11 评论数量:53 留言数量:0 访问次数:153594 建立时间:2006年4月11日 |

| |
|
[Java]在Spring MVC中绑定集合类型 原创空间
wdx04 发表于 2006/4/11 17:57:24 |
| 最近学习Spring,很纳闷Spring MVC Framework如何处理表单提交,尤其是表单中有一个多行的数据表格的时候。毕竟Spring没有提供如Struts那样的html和nested标签库,使我们能够很容易地绑定ActionForm中的字段和JSP页面中的表单控件。今天终于找到了一个解决方案。
下面这段JSP代码是HTML表单中的一个table,其中form为表单对象;programs是一个List类型的集合,元素为Program类型的JavaBean。Program中的mark字段是可以在JSP页面中更改的,我的目的是,在提交表单时,request中的值能够自动更新到表单对象中。
<tbody> <c:forEach var="program" items="${form.programs}" varStatus="loopStatus"> <spring:bind path="form.programs[${loopStatus.index}]"> <tr> <td><c:out value="${status.value.progId}"/></td> <td><c:out value="${status.value.progName}"/></td> <td><c:out value="${status.value.progVer}"/></td> <td><c:out value="${status.value.progLvl}"/></td> <td><c:out value="${status.value.gameCnt}"/></td> <td><c:out value="${status.value.winCnt}"/></td> <td><c:out value="${status.value.loseCnt}"/></td> <td><c:out value="${status.value.drawCnt}"/></td> <td><input type="text" name="${status.expression}.mark" value="${status.value.mark}" size="5" maxlength="5"/></td> </tr> </spring:bind> </c:forEach> <tr><td colspan="9" align="center"> <input type="submit" value="提交"/> </td></tr> </tbody>
这里有几个比较关键的地方:(1) <c:forEach>中的 varStatus 属性,定义了 varStatus 才能取到迭代器的当前索引。(2) <spring:bind>中的 path 属性,通过 path="form.programs[${loopStatus.index}] 才能正确地绑定到一个Program元素。(3) <input>中的 name 属性,这里 ${status.expression} 的值是形如 "programs[0]" 的字符串,方括号中的索引为bind时设定的 loopStatus.index ;加上后面的 ".mark",就能形成完整的名称。这样,在提交表单时,Spring就能通过分析名称,把该字段的值填充到form中了。
|
|
|
回复:在Spring MVC中绑定集合类型 原创空间
BK(游客)发表评论于2006/6/5 21:44:48 |
| 我的无法跳转到controller!!!!!!!!!! |
|
» 1 »
|