通過(guò)Ajax兩種方式講解Struts2接收數(shù)組表單的方法
使用struts2表單傳值,可以傳一個(gè)或者是作為一個(gè)對(duì)象的各個(gè)屬性傳,都非常靈活便捷。但是如果我們需要傳一個(gè)數(shù)組并希望struts正確接收,該怎么處理呢?
下面我將通過(guò)普通表單和ajax兩種方式講解。首先我們有如下一個(gè)實(shí)體,一個(gè)action和一個(gè)jsp。
Student.java
public class Student { private String name; private String num; } StudentAction.java public class StudentAction extends ActionSupport { private List<Student> lstStu; }
xy.jsp
<script type="text/javascript"> var stus = []; stus.push({num:"1",name:"xy1"}); stus.push({num:"2",name:"xy2"}); stus.push({num:"3",name:"xy3"}); </script>
下面開(kāi)始吧,以下代碼都是寫(xiě)在xy.jsp的腳本區(qū)的。
普通表單形式——遍歷數(shù)組,構(gòu)造表單隱藏域
var htmlContent = ""; for(var i=0;i<stus.length;i++){ htmlContent += "<input type='hidden' name='lstStu[" + i + "].name' value='" + stus[i].name + " ' />"; htmlContent += "<input type='hidden' name='lstStu[" + i + "].num' value='" + stus[i].num + " ' />"; }
特殊情況
<input type='hidden' name='lstStu.name' value='xy1' /> <input type='hidden' name='lstStu.name' value='xy2' /> <input type='hidden' name='lstStu.name' value='xy3' />
傳單個(gè)屬性時(shí),struts可以認(rèn)識(shí),表示3個(gè)不同的student。但是傳兩個(gè)屬性就不行了,因?yàn)閟truts不知道組合。不推薦。
ajax形式——遍歷數(shù)組,構(gòu)造json對(duì)象
var param = {}; for(var i=0;i<stus.length;i++){ param["lstStu[" + i + "].name"] = stus[i].name; param["lstStu[" + i + "].num"] = stus[i].num; } $.ajax({ data:param });
其實(shí)我們構(gòu)建了這樣一個(gè)json對(duì)象
data:{ lstStu[0].num:"1",lstStu[0].name:"xy1", lstStu[1].num:"2",lstStu[1].name:"xy2", lstStu[2].num:"3",lstStu[0].name:"xy3" }
有的人說(shuō),那直接把stus數(shù)組作為data傳到Action不是很方便?答案是不能這樣傳,這樣action接收不到或者說(shuō)struts不知道怎么處理傳來(lái)的數(shù)組。
本文內(nèi)容到此結(jié)束了,希望對(duì)大家有所幫助。
- 簡(jiǎn)單談?wù)凷truts動(dòng)態(tài)表單(DynamicForm)
- Struts2中接收表單數(shù)據(jù)的三種驅(qū)動(dòng)方式
- J2EE中的struts2表單細(xì)節(jié)處理
- 詳解struts2的token機(jī)制和cookie來(lái)防止表單重復(fù)提交
- Struts2中Action三種接收參數(shù)形式與簡(jiǎn)單的表單驗(yàn)證功能
- Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用
- struts2中一個(gè)表單中提交多個(gè)請(qǐng)求的例子(多個(gè)提交按鈕)
- 基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交
相關(guān)文章
詳解ajax +jtemplate實(shí)現(xiàn)動(dòng)態(tài)分頁(yè)
jtemplate是一個(gè)基于JQuery的模板引擎插件,功能非常強(qiáng)大,有了她你就再不用為使用JS綁定數(shù)據(jù)集而發(fā)愁了。本文給大家分享ajax +jtemplate實(shí)現(xiàn)動(dòng)態(tài)分頁(yè),需要的朋友可以參考下本文2015-09-09jquery通過(guò)AJAX從后臺(tái)獲取信息并顯示在表格上的實(shí)現(xiàn)類(lèi)
今天小編抽給時(shí)間把jquery通過(guò)AJAX從后臺(tái)獲取信息并顯示在表格上的實(shí)現(xiàn)類(lèi),單獨(dú)寫(xiě)出來(lái),這樣程序員,不需要每次寫(xiě)代碼了,可以節(jié)省大量的時(shí)間,感興趣的朋友一起來(lái)看看吧2015-09-09ajax接口文檔url路徑的簡(jiǎn)寫(xiě)實(shí)例
前端工程師將來(lái)打交道最多的是Http API接口,此種接口會(huì)提供一個(gè)URL地址暴露在互聯(lián)網(wǎng)上,可以通過(guò)編寫(xiě)Ajax代碼去與之交互來(lái)完成功能,下面這篇文章主要給大家介紹了關(guān)于ajax接口文檔url路徑簡(jiǎn)寫(xiě)的相關(guān)資料,需要的朋友可以參考下2021-10-10解決ajax返回驗(yàn)證的時(shí)候總是彈出error錯(cuò)誤的方法
這篇文章主要介紹了解決ajax返回驗(yàn)證的時(shí)候總是彈出error錯(cuò)誤的方法,感興趣的小伙伴們可以參考一下2016-01-01在dom4j中使用XPath的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇在dom4j中使用XPath的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09Ajax請(qǐng)求過(guò)程中下載文件在FireFox(火狐)瀏覽器下的兼容問(wèn)題
最近做了個(gè)項(xiàng)目,其中有項(xiàng)目需求是這樣的,點(diǎn)擊一個(gè)文件鏈接下載該文件,同時(shí)向后臺(tái)發(fā)送請(qǐng)求,在開(kāi)發(fā)過(guò)程中問(wèn)題百出,小編把問(wèn)題總結(jié)分享在腳本之家平臺(tái),供大家參考2016-01-01那些年,我還在學(xué)習(xí)Ajax 學(xué)習(xí)筆記
Ajax不用說(shuō),每個(gè)做web開(kāi)發(fā)的同志都知道,因?yàn)樗菍W(xué)習(xí)web開(kāi)發(fā)必經(jīng)之路,不管你是做asp.net,還是javaWeb,還是PHP2012-03-03IE下jquery ajax無(wú)法獲得最新數(shù)據(jù)的問(wèn)題解決(IE緩存)
利用ajax查詢(xún)數(shù)據(jù),在谷歌瀏覽器下可以獲取到最新數(shù)據(jù),而在IE中獲得是舊數(shù)據(jù),無(wú)法獲得最新的數(shù)據(jù),經(jīng)查資料,才發(fā)現(xiàn)時(shí)IE緩存再作怪2013-08-08Ajax請(qǐng)求成功后return無(wú)法接收到返回值的問(wèn)題及解決方案
項(xiàng)目中需要頻繁的用到ajax請(qǐng)求,所以就想用一個(gè)方法將整個(gè)請(qǐng)求封裝起來(lái),直接調(diào)用方法傳遞參數(shù),然后返回請(qǐng)求結(jié)果就可以了,這篇文章主要介紹了ajax請(qǐng)求成功后return無(wú)法接收到返回值,需要的朋友可以參考下2023-10-10