日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Struts2 整合jQuery实现Ajax功能(2)

發(fā)布時(shí)間:2025/5/22 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2 整合jQuery实现Ajax功能(2) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.1.1???Action利用struts2-json-plugin-X.X.X.jar響應(yīng)Json格式信息:

1.????? function?removerecordbyid(recordid){???

2.????? ????????$("#showallrecord?table?tr").each(??

3.????? ????????function(){??

4.????? ??????????var?seq=parseInt($( this ).children( "td" ).html());??

5.????? ??????????var?thisrecord?=? this ;??

6.????? ??????????if(seq==recordid)??

7.????? ????????????if(confirm( "您確認(rèn)運(yùn)行刪除操作么?")){??

8.????? ????????????????$.ajax({??

9.????? ????????????????????type:?"POST",??

10.?? ????????????????????url:"removeRecordById.action",??

11.?? ????????????????????dataType:"json",??

12.?? ????????????????????data:{"msg.id":recordid},??

13.?? ????????????????????success:function(json){??

14.?? ????????????????????????if(json.status==4){??

15.?? ????????????????????????????alert("刪除失敗,僅僅有提交留言的ip才干刪除" );??

16.?? ????????????????????????}else{??

17.?? ????????????????????????????$(thisrecord).remove();??

18.?? //??????????????????????????alert("刪除成功");?? ??

19.?? ????????????????????????}??

20.?? ????????????????????},??

21.?? ????????????????????error:function(){??

22.?? ????????????????????????alert("del?error");??

23.?? ????????????????????}??

24.?? ????????????????});??

25.?? ????????????}??

26.?? ????????});??

27.?? ????}??

?Action代碼(做了簡(jiǎn)化)

1.????? public ? class ?CrudMsgAction? extends?ActionSupport{??

2.????? ????private?Record?msg;??

3.????? ????private ? int?index;??

4.????? ????private?RecordService?recordService;??

5.????? ????private?List<Record>?records;??

6.????? ????private ? int ?status?=?0 ;??

7.????? ????private ? int?page?=? 0 ;??

8.????? ??????

9.????? ????@JSON (serialize= false)??

10.?? ????public?RecordService?getRecordService()?{??

11.?? ????????return?recordService;??

12.?? ????}??

13.?? ??????

14.?? ????/** ?

15.?? ?????*?返回全部記錄的JSON數(shù)據(jù) ?

16.?? ?????*?@return?list?.?All?of?the?record.?

17.?? ?????*?@throws?Exception?

18.?? ?????*/ ???

19.?? ????public?String?listAllRecord()? throws ?Exception{??

20.?? ????????List<Record>?list?=?recordService.listAllRecord();??

21.?? ????????records?=?list;??

22.?? ????????return?SUCCESS;??

23.?? ????}??

24.?? ??????

25.?? ????public?String?listAllRecordByPage()? throws?Exception{??

26.?? ????????List<Record>?list?=?recordService.listAllRecord(page);??

27.?? ????????records?=?list;??

28.?? ????????return?SUCCESS;??

29.?? ????}??

30.?? ??

31.?? ????/** ?

32.?? ?????*?插入記錄 ?

33.?? ?????*?@return?update?the?view?with?AJAX?when?struts2?action?return?

34.?? ?????*?@throws?Exception?

35.?? ?????*/ ?

36.?? ????public?String?listRecordByIndex()? throws ?Exception{??

37.?? ????????List<Record>?list?=?recordService.listAllRecord();??

38.?? ????????this.msg?=?list.get( this .getIndex());??

39.?? ??????????

40.?? ????????return?SUCCESS;??

41.?? ????}??

42.?? ????/** ?

43.?? ?????*?刪除相應(yīng)id記錄 ?

44.?? ?????*?@return?field?status.?in?order?to?update?view?with?AJAX ?

45.?? ?????*?@throws?Exception?

46.?? ?????*/ ??

47.?? ????public?String?removeRecordById()? throws ?Exception{??

48.?? ????????String?clientIpAddr?=?ServletActionContext.getRequest().getRemoteAddr();??

49.?? ????????Record?r?=?recordService.listRecordById(msg.getId());??

50.?? ????????if(clientIpAddr.equals(r.getIpaddr())){??

51.?? ????????????recordService.removeRecordById(msg.getId());??

52.?? ????????????return?SUCCESS;??

53.?? ????????}??

54.?? ????????status?=?4;??

55.?? ????????return?SUCCESS;??

56.?? ????}??

57.?? ??????

58.?? ????/** ? ?獲得分頁(yè)數(shù) ? ???*/ ??

59.?? ????public?String?getPageSize()? throws ?Exception{??

60.?? ????????page?=?recordService.getPage();??

61.?? ????????return?SUCCESS;??

62.?? ????}??

63.?? }

上面代碼中,使用了 @JSON(serialize=false),
除此之外,@JSON還支持例如以下幾個(gè)域:
name:指定Action屬性被序列化成JSON對(duì)象的屬性名。
serialize:設(shè)置是否序列化該屬性
deserialize:設(shè)置是否反序列化該屬性。
format:設(shè)置用于格式化輸出、解析日期表單域的格式。比如"yyyy-MM-dd'T'HH:mm:ss"

?

1.????? ?< package ? name = "json" ?extends = "json-default" > ??

2.????? ????????<action ? name = "ajaxRequest" ? class ="com.jun.demos.struts2json.HelloWorld" > ??

3.????? ????????????<result ? type = "json" ? /> ??

4.????? ????????</action > ??

5.????? ????????<action ? name = "listIndexRecord" ? class ="com.jun.demos.book.action.CrudMsgAction" > ??

6.????? ????????????<result ? type = "json" ? /> ??

7.????? ????????</action > ??

8.????? ????????<action ? name = "listAllRecord" ? class ="com.jun.demos.book.action.CrudMsgAction" ? method ="listAllRecord" > ??

9.????? ????????????<result ? type = "json" ? /> ??

10.?? ????????</action > ???

11.?? ????????<action ? name = "removeRecordById" ? class ="CrudMsgAction" ? method = "removeRecordById" >??

12.?? ????????????<result ? type = "json" ? /> ??

13.?? ????????</action > ??

14.?? ????????<action ? name = "getPageIndex" ? class = " CrudMsgAction"? method = "getPageSize" > ??

15.?? ????????????<result ? type = "json" ? /> ??

16.?? ????????</action > ??

17.??????</package > ??

配置該Action與配置普通Action存在小小的差別。

包繼承了json-default包,而不再繼承默認(rèn)的default包,這是由于僅僅有在該包下才有json類型的Result。
Result能夠使用 <param name="excludeProperties">page,index</param>排除Action 中這些都不返回的屬性.

我們僅僅要輸出person對(duì)象的name屬性值,配置例如以下

1.?????<result?type="json">??

2.?????????<param?name="root">person.name</param>??

3.?????</result>??

?

excludeNullProperties參數(shù):表示是否去掉空值,?默認(rèn)值是false

4.?????<result?type="json">??

5.?????????<param?name="excludeNullProperties">true</param>??

6.??????</result>?

?

ignoreHierarchy參數(shù):表示是否忽略等級(jí),也就是繼承關(guān)系,比方:TestAction繼承于BaseAction,那么TestAction中返回的json字符串默認(rèn)是不會(huì)包括父類BaseAction的屬性值,ignoreHierarchy值默覺(jué)得true

7.????? <result?type="json">??

8.????? ????<param?name="ignoreHierarchy">false</param>??

9.????? </result>??

?

includeProperties參數(shù):輸出結(jié)果中須要包括的屬性值,這里正則表達(dá)式和屬性名匹配,能夠用“,”切割填充多個(gè)正則表達(dá)式。?如:輸出person的全部屬性

10.?? <result?type="json">??

11.?? ????<param?name="includeProperties">person.*,?person/.name</param>??

12.?? </result>??

?

?

比如:

??? <!-- 購(gòu)房合同管理 namespace保證action的路徑與jQuery兼容-->

??? <package name="yushou_hetong" extends="json-default"namespace="/pages/hetong">

??? ??? <actionname="hetongAdd"class="hetongAddAction">

??? ??? ??? <result name="list">/pages/hetong/qylist.jsp</result>

??? ??? ??? <!-- <resultname="add">/pages/hetong/add.jsp</result> 改用純Html+jQuery-->

??? ??? ??? <result name="add">/pages/hetong/add.html</result>

??? ??? ??? <result name="Query">/pages/hetong/query.html</result>

??? ??? ??? <result name="xiangmu">/pages/hetong/add/xiangmu.jsp</result>

??? ??? ??? <result name="loupan">/pages/hetong/add/loupan.jsp</result>

??? ??? ??? <result name="house">/pages/hetong/add/house.jsp</result>

??? ??? ??? <result name="houseList">/pages/hetong/add/houseList.jsp</result>

??? ??? ??? <result name="fukuan">/pages/hetong/add/fukuan.jsp</result>

??? ??? ??? <result name= "success"? type="json" >

??? ??? ??? ??? ??? <param name="ignoreHierarchy">false</param>

??? ??? ??? ??? ??? <param name="includeProperties">errmsg</param>

??? ??? ??? </result>

??? ??? </action>

??? </package>

?

二級(jí)聯(lián)動(dòng)標(biāo)簽

struts2 標(biāo)簽s:doubleselect二級(jí)聯(lián)動(dòng)標(biāo)簽的基礎(chǔ)上實(shí)現(xiàn)事件:第二級(jí)onchange時(shí)調(diào)用struts2 action,在action中查詢一個(gè)名稱,然后返回回來(lái),此信息顯示在頁(yè)面上(這僅僅是給用戶一個(gè)提示信息,不影響表單是否能提交)

?

須要加事件的二級(jí)聯(lián)動(dòng)jsp代碼

1.?????????<td?class="alignLeft"?width="22%">???所屬業(yè)務(wù)/項(xiàng)目名稱:???</td>??

2.?????????<td?valign="top"?class="alignLeft"?width="20%">??

3.?????????????<s:doubleselect?name="changeApplyFormBO.operationId"?list="operationList"?listKey="id"??

4.?????????????listValue="operationName"?doubleList="operationSubProductList"???

5.?????????????doubleListKey="id"?doubleListValue="prudName"??doubleName="changeApplyFormBO.productId"??

6.?????????????headerKey=""??headerValue="---?Please?Select?---"?/>????

7.????????????? <span?id="company"?style="color:red"></span>??

8.?????????</td>??

????我們須要在項(xiàng)目名稱被改變的事件下調(diào)用函數(shù),在生成的靜態(tài)頁(yè)面中查得它的idcbApplySubmit_changeApplyFormBO_productId

說(shuō)明一下,這里生成的id有一點(diǎn)規(guī)律,貌似。cbApplySubmit是本頁(yè)面form表單的action,而changeApplyFormBO.productId項(xiàng)目名稱name

?

以下給出定制下拉菜單事件的js?

1.?????<script>??

2.???????????

3.???????????$(function(){??

4.???????????????var?obj=document.getElementById("cbApplySubmit_changeApplyFormBO_productId");??

5.???????????????obj.οnchange=function(){??????

6.????????????????var?prodId=obj.value;??

7.????????????????var?url="${contextPath}/assets/businessChange/ajaxGetCompany.do";??

8.????????????????var?jsonProd={productId:prodId};????//JSON對(duì)象??????

9.????????????????var?prodStr=JSON.stringify(jsonProd);????//JSON對(duì)象轉(zhuǎn)變成JSON格式的字符串??

10.?? ???????????$.post(url,{json:prodStr},callback,"json");???

11.?? ??????????}??

12.?? ????????function?callback(json){?????

13.?? ????????????$("#company").html(json.msg);??

14.?? ?????????}???

15.?? ?????});???

16.?? ??????

17.?? </script>??

?這里,無(wú)論是從瀏覽器端(JSAjaxJquery等)發(fā)送給server端,還是從server端(StrutsActionServlet等)發(fā)送回client,發(fā)送的都是JSON格式的字符串

?

解釋例如以下:

1.?????var?jsonProd={productId:prodId};??

?這句是組裝JSON對(duì)象,這里非常easy,keyproductIdvalue是頁(yè)面選擇的項(xiàng)目名稱的id

??

1.?????//JSON對(duì)象轉(zhuǎn)變成JSON格式的字符串??

2.?????var?prodStr=JSON.stringify(jsonProd);???

?通過(guò)JavaScript內(nèi)置對(duì)象JSONstringify方法,將JSON對(duì)象轉(zhuǎn)換成字符串。由于,我們傳送給server端的要是JSON格式的字符串。

?

1.?????$.post(url,{json:prodStr},callback,"json");???

?這一句,jqueryPOST方法向server端發(fā)送數(shù)據(jù),url是我們要調(diào)用的action全路徑,而{json:prodStr}是我們要發(fā)送的數(shù)據(jù)(data),{json:prodStr},事實(shí)上也是一個(gè)JSON對(duì)象,Keyvalue的形式,注意,我們把prodStr這個(gè)json串發(fā)過(guò)去,在Action那里接收時(shí),要接收“json”這個(gè)變量,這個(gè)變量的值就是我們發(fā)送的prodStr字符串。

回調(diào)函數(shù)(callback)是指server端成功返回時(shí),在JS端運(yùn)行的函數(shù)。最后一個(gè)參數(shù)“json”是返回?cái)?shù)據(jù)類型的一種,另外,還有”text”“xml”

?function?callback(json){?????

1.?????????????$("#company").html(json.msg);??

2.??????????}???

3.??????});??

?companyspanid,請(qǐng)看最上面二級(jí)聯(lián)動(dòng)標(biāo)簽處。這個(gè)函數(shù)用來(lái)顯示action中組裝的json對(duì)象的value

?

struts2 action類?

1.?????import?org.json.JSONObject;??

2.???????

3.?????public?class?CBApplyAction?extends?ActionSupport?{??

4.?????????private?IProductMng?productMng;??

5.?????????private?String?json;??

6.?????????/**?

7.??????????*?通過(guò)選擇的項(xiàng)目名稱,給出提示事業(yè)部名稱的提示信息?

8.??????????*??

9.??????????*?@return?

10.?? ?????*?@throws?Exception?

11.?? ?????*/??

12.?? ????public?void?ajaxGetCompany()?throws?Exception?{??

13.?? ????????JSONObject?jsonObj?=?new?JSONObject(json);?//?JSON格式的字符串構(gòu)造成JSON對(duì)象??

14.?? ??????????

15.?? ????????String?productId?=?jsonObj.getString("productId");?//?獲取JSON對(duì)象中的productId屬性的值??

16.?? ??????????

17.?? ????????ProductBO?prod?=?productMng.loadProduct(Integer.parseInt(productId));??

18.?? ????????Integer?companyId?=?prod.getCompanyId();??

19.?? ????????CompanyBO?comp?=?productMng.loadCompany(companyId);??

20.?? ????????String?companyName?=?"事業(yè)部為:"?+?comp.getName();??

21.?? ????????json?=?"{msg:'"?+?companyName?+?"'}";????//構(gòu)造JSON格式的字符串?????

22.?? ????????sendMsg(json);????//發(fā)送JSON格式的字符串回JS??????

23.?? ????}??

24.?? ??????

25.?? ????public?void?sendMsg(String?content)?throws?IOException{??????

26.?? ????????HttpServletResponse?response?=?ServletActionContext.getResponse();??????

27.?? ????????response.setCharacterEncoding("UTF-8");??????

28.?? ????????response.getWriter().write(content);??????

29.?? ????}????

30.?? ??

31.?? ????public?String?getJson()?{??

32.?? ????????return?json;??

33.?? ????}??

34.?? ??

35.?? ????public?void?setJson(String?json)?{??

36.?? ????????this.json?=?json;??

37.?? ????}??

38.?? ??

39.?? ????public?void?setProductMng(IProductMng?productMng)?{??

40.?? ????????this.productMng?=?productMng;??

41.?? ????}????

42.?? }??

???? JSONObject是我從json的站點(diǎn)http://www.json.org/java/index.html上下載了一些java文件,然后將這些.java文件打成一個(gè)jar包json.jar,放在項(xiàng)目lib里面 ajaxGetCompany方法沒(méi)有像struts2 別的方法那樣有返回值String,這里設(shè)的是void,因我們不須要不論什么跳轉(zhuǎn).

???這里有個(gè)須要注意的,json= "{msg:'" + companyName + "'}"; companyName外面應(yīng)該有引號(hào)括起來(lái)

?

?struts2 配置文件

1.?????<action?name="ajaxGetCompany"?class="CBApplyAction"??

2.?????????method="ajaxGetCompany">??

3.?????</action>??

?沒(méi)有result?

總結(jié)

以上是生活随笔為你收集整理的Struts2 整合jQuery实现Ajax功能(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人黄色网 | 毛片视频播放 | 黄色一级片 | 男女做爰猛烈刺激 | 午夜国产一区二区三区 | 日本热久久 | 婷婷色综合网 | 成人免费看片' | 国产精品国色综合久久 | 久久刺激 | 精品黑人一区二区三区国语馆 | 69xxx国产 | 欧洲久久久 | 国产精品无码一区二区无人区多人 | 动漫大乳美女 | 91精品久久久久久久久久 | 特黄aaaaaa私密按摩 | 成人在线观看免费爱爱 | 视频二区中文字幕 | 日韩av免费一区 | 五月婷av| 影音先锋成人资源站 | 欧美熟妇精品黑人巨大一二三区 | 中文字幕av一区二区三区谷原希美 | 风间由美在线观看 | 亚洲免费自拍 | 日韩二区在线 | 麻豆视频网页 | 国产女优在线播放 | 丰满熟女人妻一区二区三区 | 三级黄网站| 国外成人免费视频 | 亚洲精品久久久久久国产精华液 | 亚洲少妇视频 | 久久久久二区 | 狐狸视频污| 黄色片子免费看 | av不卡在线免费观看 | 国产依人| 九草视频在线 | 在线观看中文 | 日韩成人久久 | 久草视频在线资源站 | 欧美激情综合五月色丁香 | 91av精品| 日本少妇性生活 | 波多野结衣视频免费观看 | 欧美激情免费视频 | 理论片琪琪午夜电影 | 在线观看日韩av | 日本三级中文 | 久久电影一区 | 色干综合| 亚洲色图欧美在线 | 国产探花视频在线观看 | 好吊操免费视频 | 国产一级免费视频 | 亚洲网站免费 | 美女被娇喘视频 | 粗大黑人巨茎大战欧美成人 | 国产一级视频在线观看 | 久久91精品国产 | 青青草视频免费播放 | 天堂资源av | 国产亚洲精品美女久久久久 | 手机在线看永久av片免费 | 欧洲久久久久 | 麻豆视频免费看 | 四虎影视最新网址 | 国产香蕉视频 | 成人小视频免费观看 | 色婷婷av一区二区三区四区 | 黄色高潮| 日本不卡一区二区三区视频 | 美国少妇性做爰 | 伊人66 | 国产成人综合自拍 | www天堂在线| 国产精品第一国产精品 | 色欧美88888久久久久久影院 | 午夜免费av | 精品www久久久久久奶水 | 中文字幕一区电影 | 日韩三级黄 | 亚洲毛片在线观看 | 七月丁香婷婷 | 久久精品香蕉 | 日本大奶视频 | 亚洲毛片一区 | 久久av在线 | 国产69页 | 91片黄在线观看喷潮 | 日本少妇色| 一个人在线观看免费视频www | 葵司免费一区二区三区四区五区 | 老司机在线免费视频 | 国产精品无人区 | 在线观看成人av | 免费特级黄毛片 |