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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BJUI使用ajax异步表单提交时后台action要加@ResponseBody

發(fā)布時(shí)間:2025/3/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BJUI使用ajax异步表单提交时后台action要加@ResponseBody 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

場景

在使用BJUI的ajaxform異步表單提交時(shí),后臺直接使用

@RequestMapping時(shí)不能正常回顯消息。

知識儲備

ajaxform異步表單提交

通過data屬性使用(帶驗(yàn)證):

<form action="../../json/ajaxDone.json" data-toggle="ajaxform"><h5>Data API Ajax提交表單1(帶驗(yàn)證)</h5><div class="bjui-row col-2"><label class="row-label">姓名</label><div class="row-input"><input type="text" name="username" data-rule="required"></div><label class="row-label">住址</label><div class="row-input"><input type="text" name="address" data-rule="required"></div></div><hr style="margin:5px 0 15px;"><div class="text-center"><button type="submit" class="btn-default">提交表單</button></div> </form>

通過JS API屬性使用(無驗(yàn)證):

BJUI.ajax('ajaxform', {url: 'json/ajax/ajax-test1.json',form: $.CurrentNavtab.find('form:eq(1)'),validate: false,loadingmask: true,okCallback: function(json, options) {console.log('返回內(nèi)容1:\n'+ JSON.stringify(json))} })

參數(shù):

?

名稱類型默認(rèn)值描述
urlstringnull[必選] 提交的URL,未指定時(shí)將取form的action屬性。
typestringPOST[可選] ajax請求方式,未指定該參數(shù)時(shí)會取form的method屬性值。
confirmMsgstringnull[可選] 提交表單前的確認(rèn)提示。
beforeSubmitfunction(form)null[可選] 執(zhí)行動作前的確認(rèn)函數(shù),返回false時(shí)不提交表單。
validate1.31booleantrue[可選] 提交表單前是否需要驗(yàn)證(需要驗(yàn)證插件nicevalidate支持)。
alertmsgbooleanfalse[可選] 是否彈出驗(yàn)證未通過的信息提示。
okalertbooleantrue[可選] 請求正常返回后,是否彈出相應(yīng)的信息提示。
callbackfunction(json)null[可選] 自定義回調(diào)函數(shù)。
okCallbackfunction(json, options)null[可選] 請求成功時(shí)的回調(diào)函數(shù),該函數(shù)會覆蓋B-JUI默認(rèn)的成功回調(diào)函數(shù),函數(shù)的options參數(shù)即是該doajax的options參數(shù)。
okAfterCallbackfunction(json, options)null[可選] 請求成功時(shí)的回調(diào)函數(shù),該函數(shù)會在B-JUI默認(rèn)的成功函數(shù)后執(zhí)行,函數(shù)的options參數(shù)即是該doajax的options參數(shù)。
errCallbackfunction(json, options)null[可選] 請求失敗時(shí)的回調(diào)函數(shù),函數(shù)的options參數(shù)即是該doajax的options參數(shù)。
failCallbackfunction(msg, options)null[可選] ajax請求出錯(cuò)時(shí)的回調(diào)函數(shù),函數(shù)的msg參數(shù)是服務(wù)端返回的出錯(cuò)信息,options參數(shù)即是該doajax的options參數(shù)。
formselectornull[可選] 要提交的表單,通過JS API使用時(shí)需要。
loadingmaskbooleantrue[可選] ajax請求時(shí)是否顯示數(shù)據(jù)加載遮罩。
targetselectornull[可選] 數(shù)據(jù)加載遮罩的父容器,值為空時(shí)默認(rèn)是當(dāng)前Navtab或Dialog。
reloadbooleanfalse[可選] 請求返回成功狀態(tài)后,是否重新加載當(dāng)前target。
forwardstringnull[可選] 跳轉(zhuǎn)地址,請求返回成功狀態(tài)后,加載forward地址對應(yīng)的內(nèi)容到當(dāng)前target。
forwardConfirmbooleanfalse[可選] 請求返回成功狀態(tài)后,是否重新加載當(dāng)前target。
closeCurrentbooleanfalse[可選] 請求返回成功狀態(tài)后,是否關(guān)閉當(dāng)前target(僅navtab或dialog)。
tabidstringnull[可選] 請求返回成功狀態(tài)后,需要刷新的navtab的id集合,多個(gè)id以,分隔。
dialogidstringnull[可選] 請求返回成功狀態(tài)后,需要刷新的dialog的id集合,多個(gè)id以,分隔。
dividstringnull[可選] 請求返回成功狀態(tài)后,需要刷新的div(僅限通過doload加載的div)的id集合,多個(gè)id以,分隔。
datagridsstringnull[可選] 請求返回成功狀態(tài)后,需要刷新的datagrid的id集合,多個(gè)id以,分隔。
gridrefreshflagbooleantrue[可選] 刷新datagrid時(shí)保留其快速篩選、排序、分頁信息。
ajaxTimeoutintBJUI.ajaxTimeout[可選] 請求超時(shí)設(shè)置,即$.ajax的timeout屬性。

?

請求返回成功狀態(tài)
指服務(wù)端返回B-JUI的消息JSON并在json[BJUI.keys.statusCode] == BJUI.statusCode.ok時(shí)有效。


?

@ResponseBody

@ResponseBody是作用在方法上的,@ResponseBody 表示該方法的返回結(jié)果直接寫入 HTTP response body 中,一般在異步獲取數(shù)據(jù)時(shí)使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析為跳轉(zhuǎn)路徑,但是加上 @ResponseBody 后返回結(jié)果不會被解析為跳轉(zhuǎn)路徑,而是直接寫入 HTTP response body 中。 比如異步獲取 json 數(shù)據(jù),加上 @ResponseBody 后,會直接返回 json 數(shù)據(jù)。@RequestBody 將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個(gè)對象。

舉例:

@RequestMapping("/login")@ResponseBodypublic User login(User user){return user;}User字段:userName pwd那么在前臺接收到的數(shù)據(jù)為:'{"userName":"xxx","pwd":"xxx"}'效果等同于如下代碼:@RequestMapping("/login")public void login(User user, HttpServletResponse response){response.getWriter.write(JSONObject.fromObject(user).toString());}

后臺實(shí)現(xiàn)

前端BJUI頁面:

<form id="RechargeRecordForm" action="${ctx}/sys/cooperativePartnersManageAction/doRecharge"data-toggle="ajaxform"class="ajaxForm" data-toggle="validate" enctype="multipart/form-data"><li><button type="submit" class="btn-default" data-icon="save" >提交</button></li>

后臺action:

@Controller @RequestMapping("/sys/cooperativePartnersManageAction") public class SysCooperativePartnerManageAction? extends BaseAction{...@ResponseBody@RequestMapping(value="/doRecharge")public Map<String, Object> doRecharge(Integer partnerId,BigDecimal rechargeMoney ) {ModelAndView mv = null;Map<String, Object> jsonResult = null;...業(yè)務(wù)代碼省略Integer statusCode = 200;String msg = "成功";jsonResult = JsonResult.jsonReturn(statusCode, msg, tabid);mv.setViewName(ModelAndViewConstants.PARTNER_RECHARGE_VIEW);LogService.getInstance(this).debug("成功:"+ModelAndViewConstants.PARTNER_RECHARGE_VIEW);}catch(Exception ex) {LogService.getInstance(this).error("失敗:" + ex.getMessage(), ex);mv = new ModelAndView(ModelAndViewConstants.ERROR_VIEW);}return jsonResult;}

?

注意:

在BJUI使用ajax異步表單提交時(shí),提交到后臺的action要加@ResponseBody,不然不能成功回顯。

?

?

?

?

?

?


?

總結(jié)

以上是生活随笔為你收集整理的BJUI使用ajax异步表单提交时后台action要加@ResponseBody的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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