springMVC常用傳參總結(jié)

本文介紹了springMVC常用的傳參方式和一些注意的事項后众,頁面表單主要以ajax的形式提交.

本帥是個菜雞仅政,水平有限擅威,若有什么講得不對或有補充的地方歡迎各位提意見魁淳。


一、傳遞String類型


1.controller方法使用String對象作為參數(shù)接收


(a) controller


使用controller使用string類型接收与倡,參數(shù)名與ajax提交參數(shù)名對應(yīng)即可



[java]view plaincopy


@RequestMapping("test")??

@ResponseBody??

public?RespMessage?test(String?a,String?b){??

????System.out.println(a);??

????System.out.println(b);??

return?RespMessage.success();//這個是返回固定格式的響應(yīng)數(shù)據(jù)界逛,不用管??

}??


(b)頁面提交代碼


[java]view plaincopy


var?data?=?{??

a:"paramA",??

b:"paramB"??

}??


$.ajax({??

"type"?:"post",//請求方式??

"url"?:"test",//請求連接??

"dataType":"json",//預(yù)期服務(wù)器返回格式,不設(shè)置jq也會自己判斷??

//"contentType"?:?"application/x-www-form-urlencoded;charset=utf-8",??

//不要指定contentType纺座,它會自動識別傳參類型息拜,設(shè)置不對反而會報400??

data:data,//請求參數(shù)??

????success?:?function(data)?{}??

});??


(c)控制臺輸出

paramA

paramB


2. controller使用bean作為參數(shù)接收


(a)TestBean


[java]view plaincopy


publicclass?TestBean?{??

private?String?a;??

private?String?b;??

public?String?getA()?{??

return?a;??

????}??

publicvoid?setA(String?a)?{??

this.a?=?a;??

????}??

public?String?getB()?{??

return?b;??

????}??

publicvoid?setB(String?b)?{??

this.b?=?b;??

????}??

}??


(b)controller

ajax提交的參數(shù)名需要與TestBean成員對象名對應(yīng)


[java]view plaincopy


@RequestMapping("test")??

@ResponseBody??

public?RespMessage?test(TestBean?testBean){??

????System.out.println(testBean.getA());??

????System.out.println(testBean.getB());??

return?RespMessage.success();??

}??

(c)頁面提交代碼同 "一. 1.(b)"


(d)控制臺輸出同 "?一.?1.(c)"

3.使用HttpServletRequest接收


(a)controller


[java]view plaincopy


@RequestMapping("test3")??

@ResponseBody??

public?RespMessage?test(HttpServletRequest?request){??

System.out.println(request.getParameter("a"));??

System.out.println(request.getParameter("b"));??

return?RespMessage.success();??

}??

注意:Content-Type不是application/x-www-form-urlencoded的POST請求是不會讀取請求體數(shù)據(jù)和進行相應(yīng)的參數(shù)處理的,即不會解析表單數(shù)據(jù)來放到request parameter map中净响。所以通過request.getParameter(name)是獲取不到的少欺。


其他同上



二、傳遞數(shù)組


1.使用urlencodeed的形式


(a)頁面提交代碼


[javascript]view plaincopy


/*var?data?=?{?

????arr:['a','b','c']?

}*///這種方式是不能服務(wù)器是接收不到數(shù)據(jù)的???

var?data?="arr=a&arr=b&arr=c"??

//或者??

//</span><span?style="font-family:Arial,?Helvetica,?sans-serif;">var?data?=?"arr=a,b,c";</span>??

$.ajax({??

"type"?:"post",//請求方式??

"url"?:"test5",//請求連接??

"dataType":"json",//預(yù)期服務(wù)器返回格式馋贤,不設(shè)置jq也會自己判斷??

????data:data,??

success?:function(data)?{}??

});??

(b)controller


[java]view plaincopy


@RequestMapping("test")??

@ResponseBody??

public?RespMessage?test(String[]?arr){??

for(String?a:arr){??

????????System.out.println(a);??

????}??

return?RespMessage.success();??

}??


(c)控制臺輸出

a

b

c

(d)順便一提赞别,我們可以使用jq的serialize()方法將form序列化成"arr=a&arr=b&arr=c"這樣的格式的數(shù)據(jù),具體如下:


html部分

[javascript]view plaincopy


</form>???


js部分

[javascript]view plaincopy


var?data?=?$("#form").serialize()??

//data="arr=a&arr=b&arr=c"??

2.利用@RequestBody接收


(a)controller


在參數(shù)上加上@RequestBody注解后就可以接收到前端傳來的json格式的數(shù)據(jù)


[java]view plaincopy


@RequestMapping("test")??

@ResponseBody??

public?RespMessage?test(@RequestBody?String[]?arr){??

for(String?a:arr){??

????????System.out.println(a);??

????}??

return?RespMessage.success();??

}??


(b)頁面提交代碼


前端這里要注意的地方有兩個掸掸,一是jq封裝的ajax參數(shù)的data這里要傳字符串格式的數(shù)據(jù)氯庆,也就是說在傳值之前需要調(diào)用JSON.stringify()方法將json對象轉(zhuǎn)成字符類型蹭秋,這并不代表服務(wù)器拿到的是字符串扰付,到了服務(wù)器那邊是json對象,只是前端這里傳參需要的是字符串仁讨,其內(nèi)部是怎么轉(zhuǎn)換的還沒有進行深入研究羽莺。 二是要制定contentType為"application/json"否則會報415錯誤。


[java]view plaincopy


var?data?=?['a','b','c'];??

data?=?JSON.stringify(data);//這一部很重要洞豁,將json對象轉(zhuǎn)成字符串格式??

$.ajax({??

"type"?:"post",//請求方式??

"url"?:"test6",//請求連接??

"contentType"?:"application/json;charset=utf-8",//這個時候就必須加contentType??

"dataType":"json",//預(yù)期服務(wù)器返回格式盐固,不設(shè)置jq也會自己判斷??

????data:data,??

????success?:?function(data)?{}??

});??

(c)控制臺輸出

a

b

c


3.使用@RequestParam

這個方法有個不好的地方就是如果這個參數(shù)沒有傳就會報異常


(a)controller


[java]view plaincopy


@RequestMapping("test")??

@ResponseBody??

public?RespMessage?test(@RequestParam(value?="arr[]")?String[]?arr){??

for(String?a:arr){??

????????System.out.println(a);??

????}??

return?RespMessage.success();??

}??

(b)請求頁面代碼


[javascript]view plaincopy


var?data?=?{??

arr:['a','b','c']??

}??

$.ajax({??

"type"?:"post",//請求方式??

"url"?:"test4",//請求連接??

"dataType":"json",//預(yù)期服務(wù)器返回格式,不設(shè)置jq也會自己判斷??

????data:data,??

success?:function(data)?{}??

});??

4.使用formData


(a)controller


[javascript]view plaincopy


@RequestMapping("test5")??

@ResponseBody??

public?RespMessage?test2(String[]?arr){??

for(String?a:arr){??

????????System.out.println(a);??

????}??

return?RespMessage.success();??

}??

(b)請求界面代碼


[javascript]view plaincopy


var?data?=new?FormData($('#form')[0]);??

$.ajax({??

"type"?:"post",//請求方式??

"url"?:"test5",//請求連接??

processData:false,//必須加否則出錯??

contentType:false,//必須加否則出錯??

"dataType":"json",//預(yù)期服務(wù)器返回格式丈挟,不設(shè)置jq也會自己判斷??

????data:data,??

success?:function(data)?{}??

});??

三刁卜、傳遞復(fù)雜對象


一般遇到比較復(fù)雜的對象就使用@requestBody注解比較方便



1.使用@requestBody



(a)bean



[java]view plaincopy


publicclass?TestBean2?{??


private?String?a;??


private?String?b;??


private?TestBean?bean;??


private?TestBean[]?beans;??


public?TestBean[]?getBeans()?{??

return?beans;??

????}??

publicvoid?setBeans(TestBean[]?beans)?{??

this.beans?=?beans;??

????}??


public?String?getA()?{??

return?a;??

????}??


publicvoid?setA(String?a)?{??

this.a?=?a;??

????}??


public?String?getB()?{??

return?b;??

????}??


publicvoid?setB(String?b)?{??

this.b?=?b;??

????}??

public?TestBean?getBean()?{??

return?bean;??

????}??

publicvoid?setBean(TestBean?bean)?{??

this.bean?=?bean;??

????}??


}??


(b)controller



[java]view plaincopy


@RequestMapping("test7")??

@ResponseBody??

public?RespMessage?test7(@RequestBody?TestBean2?test){??


return?RespMessage.success();??

}??

(c)請求頁面代碼



[java]view plaincopy


var?data?=?{??

a:"paramA",??

b:"paramB",??

bean:{a:"beanA",b:"beanB"},??

beans:[{a:"beansA1",b:"beadsB1"},{a:"beansA2",b:"beadsB2"}]??

}??

data?=?JSON.stringify(data);??

$.ajax({??

"type"?:"post",//請求方式??

"url"?:"test7",//請求連接??

"dataType":"json",//預(yù)期服務(wù)器返回格式,不設(shè)置jq也會自己判斷??

"contentType"?:"application/json;charset=utf-8",??

????data:data,??

????success?:?function(data)?{}??

});??



(d)測試結(jié)果




2.使用form提交


(a)controller


[java]view plaincopy


@RequestMapping("test8")??

@ResponseBody??

public?RespMessage?test8(TestBean2?test){??


return?RespMessage.success();??

}??



(b)提交頁面代碼



[java]view plaincopy


</form>???

順便一提:這個也可以通過var data = new FormData($('#form')[0]);獲取formdata對象然后通過ajax提交曙咽,具體可以參照二.4這里就不贅述了蛔趴。



四、傳遞文件


1.使用form提交


(a)controller



[java]view plaincopy


@RequestMapping("test10")??

@ResponseBody??

public?RespMessage?test10(MultipartFile?file){??

try?{??

file.transferTo(new?File("E://".concat(file.getOriginalFilename())));??

}catch?(IllegalStateException?e)?{??

????????e.printStackTrace();??

}catch?(IOException?e)?{??

????????e.printStackTrace();??

????}??

return?RespMessage.success();??

}??

(b)提交頁面代碼


[java]view plaincopy


</form>???


順便一提:文件上傳同樣可以使用formdata對象使用ajax進行提交例朱,具體參考上面的步驟孝情,這里就不贅述了。


這里順便提供一個帶進度條的文件上傳方法:


[javascript]view plaincopy


//上傳按鈕點擊??

$("#uploadbtn").click(function(){??

var?files?=?$("#file")["0"].files;??

var?len?=?files.length;??

for(var?i=0;i<len;i++)?{??

????????????????UpladFile(files[i],i);??

????????????}??

????????})??



//開始上傳??

function?UpladFile(fileObj,i)?{????

//bar.fadeIn();??

//var?fileObj?=?document.getElementById("file").files[0];?//?js?獲取文件對象????

var?FileController?="/cwjgpt/notice/FileUpload.do";//?接收上傳文件的后臺地址?????

//?FormData?對象---進行無刷新上傳????

var?form?=new?FormData();????

//form.append("author",?"hooyes");?//?可以增加表單數(shù)據(jù)????

form.append("file",?fileObj);//?文件對象????

//?XMLHttpRequest?對象????

var?xhr?=new?XMLHttpRequest();????

xhr.open("post",?FileController,true);????

xhr.onload?=function()?{???

//alert("上傳完成!");????

????????????};????

//監(jiān)聽progress事件????

xhr.upload.addEventListener("progress",???

function(evt){??

if?(evt.lengthComputable)?{????

var?procce?=?Math.round(evt.loaded?/?evt.total?*?100);//計算進入百分比??

updataprocess(i,procce);//這個是自己寫的一個更新進度條的方法洒嗤,這里你們自己實現(xiàn)然后更新界面的進度條??

????????????????????????}????

????????????????????}??

,false);????

????????????xhr.send(form);????

????????}????

項目中傳參總結(jié):

1箫荡、后臺Controller通過request轉(zhuǎn)對象

(1)前臺ajax請求:

var param = {

"receiver_name": $("#receiver_name").val().trim(),

"province_code": $("#i_province").find("option:selected").val(),

"city_code": $("#i_cityCode").find("option:selected").val(),

"district_code": $("#i_areaCode").find("option:selected").val(),

"province_name": $("#i_province").find("option:selected").text(),

"city_name": $("#i_cityCode").find("option:selected").text(),

"district_name": $("#i_areaCode").find("option:selected").text(),

"address": $("#address").val().trim(),

"print_address":$("#print_address").val().trim(),

"contact_phone": $("#contact_phone").val(),

"default_address": $("#default_address").is(":checked")?1:0,

"purchaser":$("#purchaser").val().trim(),

"purchaser_phone":$("#purchaser_phone").val().trim()

};

$.ajax({

url: ctx + "/address/saveAddress",

data: param,

type: 'post',

dataType: 'json',

success: function(data) {

if(data.state == "success"){

doQuery();

$('#main-content').hideLoading();

}else if(data.state == "many"){

$('#main-content').hideLoading();

alertModal("保存失敗渔隶,收貨地址最多為10個!");

}else{

$('#main-content').hideLoading();

alertModal("保存異常羔挡,請聯(lián)系管理員!");

}

}

});

(2)后臺接受并處理請求

UsermanageReceiverAddress receAddress = Request2MapUtil.wrapBean(UsermanageReceiverAddress.class, request);

Map params = Request2MapUtil.wrapMap(request);

//

// Source code recreated from a .class file by IntelliJ IDEA

// (powered by Fernflower decompiler)

//

package com.yaoex.framework.core.util;

import java.beans.PropertyDescriptor;

import java.math.BigDecimal;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.BeanWrapper;

import org.springframework.beans.BeanWrapperImpl;

public class Request2MapUtil {

public Request2MapUtil() {

}

private static Object convertType(String classType, String value) {

if(value == null) {

return null;

} else {

try {

if(classType.equals("java.lang.String")) {

return value.trim();

} else if(classType.equals("java.lang.Integer")) {

return Integer.valueOf(value);

} else if(classType.equals("java.lang.Long")) {

return Long.valueOf(value);

} else if(classType.equals("java.lang.Float")) {

return Float.valueOf(value);

} else if(classType.equals("java.lang.Double")) {

return Double.valueOf(value);

} else if(classType.equals("java.math.BigDecimal")) {

return new BigDecimal(value);

} else {

SimpleDateFormat formatter;

if(classType.equals("java.util.Date")) {

if(value.length() == 10) {

formatter = new SimpleDateFormat("yyyy-MM-dd");

} else if(value.length() == 16) {

formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");

} else if(value.length() == 19) {

formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

} else {

formatter = new SimpleDateFormat("yyyy-MM-dd");

}

formatter.setLenient(false);

return formatter.parse(value);

} else if(classType.equals("java.sql.Date")) {

if(value.length() == 10) {

formatter = new SimpleDateFormat("yyyy-MM-dd");

} else if(value.length() == 16) {

formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");

} else if(value.length() == 19) {

formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

} else {

formatter = new SimpleDateFormat("yyyy-MM-dd");

}

formatter.setLenient(false);

Date date = formatter.parse(value);

return new java.sql.Date(date.getTime());

} else {

return classType.equals("java.lang.Boolean")?Boolean.valueOf(value):(classType.equals("java.lang.Byte")?Byte.valueOf(value):(classType.equals("java.lang.Short")?Short.valueOf(value):(classType.equals("java.lang.Object")?value:null)));

}

}

} catch (NumberFormatException var4) {

return null;

} catch (ParseException var5) {

return null;

}

}

}

public static T wrapBean(Class beanClass, HttpServletRequest request) throws InstantiationException, IllegalAccessException {

T objInstance = beanClass.newInstance();

BeanWrapper beanWrapper = new BeanWrapperImpl(objInstance);

PropertyDescriptor[] var7;

int var6 = (var7 = beanWrapper.getPropertyDescriptors()).length;

for(int var5 = 0; var5 < var6; ++var5) {

PropertyDescriptor descriptor = var7[var5];

String name = descriptor.getName();

String type = descriptor.getPropertyType().getName();

if(beanWrapper.isWritableProperty(name)) {

Object value = convertType(type, request.getParameter(name));

if(value != null) {

beanWrapper.setPropertyValue(name, value);

}

}

}

return objInstance;

}

public static Object wrapBean(Class beanClass, HttpServletRequest request, Map bean_name) throws InstantiationException, IllegalAccessException {

Object objInstance = beanClass.newInstance();

BeanWrapper beanWrapper = new BeanWrapperImpl(objInstance);

PropertyDescriptor[] var8;

int var7 = (var8 = beanWrapper.getPropertyDescriptors()).length;

for(int var6 = 0; var6 < var7; ++var6) {

PropertyDescriptor descriptor = var8[var6];

String name = descriptor.getName();

String type = descriptor.getPropertyType().getName();

if(beanWrapper.isWritableProperty(name)) {

Object value = convertType(type, request.getParameter(bean_name.get(name) == null?name:(String)bean_name.get(name)));

if(value != null) {

beanWrapper.setPropertyValue(name, value);

}

}

}

return objInstance;

}

public static Map wrapMap(HttpServletRequest request) {

String parameterName = null;

String parameterValue = null;

Map params = new HashMap();

Enumeration e = request.getParameterNames();

while(e.hasMoreElements()) {

parameterName = (String)e.nextElement();

parameterValue = request.getParameter(parameterName);

if(parameterValue != null && !"".equals(parameterValue.trim())) {

params.put(parameterName, parameterValue);

}

}

return params;

}

public static Map request2Map(HttpServletRequest request) {

Map result = new HashMap();

Map params = request.getParameterMap();

String key = null;

String[] value = null;

int size = false;

if(params != null) {

Iterator var7 = params.entrySet().iterator();

while(var7.hasNext()) {

Entry entry = (Entry)var7.next();

key = (String)entry.getKey();

value = (String[])entry.getValue();

int size = value.length;

if(value != null && size > 0) {

if(size == 1) {

result.put(key, value[0]);

} else {

result.put(key, value);

}

}

}

}

return result;

}

public static Map wrapMap(Class beanClass, HttpServletRequest request) throws InstantiationException, IllegalAccessException {

Map map = new HashMap();

Object objInstance = beanClass.newInstance();

BeanWrapper beanWrapper = new BeanWrapperImpl(objInstance);

PropertyDescriptor[] var8;

int var7 = (var8 = beanWrapper.getPropertyDescriptors()).length;

for(int var6 = 0; var6 < var7; ++var6) {

PropertyDescriptor descriptor = var8[var6];

String name = descriptor.getName();

if(beanWrapper.isWritableProperty(name) && request.getParameter(name) != null) {

map.put(name, request.getParameter(name).trim());

}

}

return map;

}

public static void wrapObject(Object obj, String[] keys, Map bean_name, HttpServletRequest request, int index) {

BeanWrapper beanWrapper = new BeanWrapperImpl(obj);

String[] var9 = keys;

int var8 = keys.length;

for(int var7 = 0; var7 < var8; ++var7) {

String key = var9[var7];

if(beanWrapper.isWritableProperty(key)) {

String[] values = request.getParameterValues(bean_name.get(key) == null?key:(String)bean_name.get(key));

if(values != null && values[index] != null) {

beanWrapper.setPropertyValue(key, values[index].trim());

}

}

}

}

public static Map wrapMap(String[] keys, HttpServletRequest request) throws InstantiationException, IllegalAccessException {

Map map = new HashMap();

String[] var6 = keys;

int var5 = keys.length;

for(int var4 = 0; var4 < var5; ++var4) {

String key = var6[var4];

map.put(key, request.getParameter(key));

}

return map;

}

public static Map wrapMap(Class beanClass, String[] keys, HttpServletRequest request) throws InstantiationException, IllegalAccessException {

Map map = wrapMap(beanClass, request);

String[] var7 = keys;

int var6 = keys.length;

for(int var5 = 0; var5 < var6; ++var5) {

String key = var7[var5];

map.put(key, request.getParameter(key));

}

return map;

}

public static Object wrapBean(String className, HttpServletRequest request) throws ClassNotFoundException, InstantiationException, IllegalAccessException {

return wrapBean(Class.forName(className), request);

}

public static List wrapBeanList(Class beanClass, HttpServletRequest request) throws InstantiationException, IllegalAccessException {

List result = new ArrayList();

BeanWrapperImpl beanWrapper = new BeanWrapperImpl(beanClass);

BeanWrapperImpl wrapper = new BeanWrapperImpl();

PropertyDescriptor[] var8;

int var7 = (var8 = beanWrapper.getPropertyDescriptors()).length;

for(int var6 = 0; var6 < var7; ++var6) {

PropertyDescriptor descriptor = var8[var6];

String name = descriptor.getName();

String type = descriptor.getPropertyType().getName();

if(beanWrapper.isWritableProperty(name)) {

String[] values = request.getParameterValues(name);

if(values != null) {

for(int i = 0; i < values.length; ++i) {

Object value = convertType(type, values[i]);

if(value != null) {

Object objInstance;

if(i < result.size()) {

objInstance = result.get(i);

wrapper.setWrappedInstance(objInstance);

wrapper.setPropertyValue(name, value);

result.set(i, objInstance);

} else {

objInstance = beanClass.newInstance();

wrapper.setWrappedInstance(objInstance);

wrapper.setPropertyValue(name, value);

result.add(objInstance);

}

}

}

}

}

}

return result;

}

public static List wrapBeanList(Class beanClass, HttpServletRequest request, Map bean_name) throws InstantiationException, IllegalAccessException {

List result = new ArrayList();

BeanWrapperImpl beanWrapper = new BeanWrapperImpl(beanClass);

BeanWrapperImpl wrapper = new BeanWrapperImpl();

PropertyDescriptor[] var9;

int var8 = (var9 = beanWrapper.getPropertyDescriptors()).length;

for(int var7 = 0; var7 < var8; ++var7) {

PropertyDescriptor descriptor = var9[var7];

String name = descriptor.getName();

String type = descriptor.getPropertyType().getName();

if(beanWrapper.isWritableProperty(name)) {

String[] values = request.getParameterValues(bean_name.get(name) == null?name:(String)bean_name.get(name));

if(values != null) {

for(int i = 0; i < values.length; ++i) {

Object value = convertType(type, values[i]);

if(value != null) {

Object objInstance;

if(i < result.size()) {

objInstance = result.get(i);

wrapper.setWrappedInstance(objInstance);

wrapper.setPropertyValue(name, value);

result.set(i, objInstance);

} else {

objInstance = beanClass.newInstance();

wrapper.setWrappedInstance(objInstance);

wrapper.setPropertyValue(name, value);

result.add(objInstance);

}

}

}

}

}

}

return result;

}

public static List wrapBeanList(String className, HttpServletRequest request) throws ClassNotFoundException, InstantiationException, IllegalAccessException {

return wrapBeanList(Class.forName(className), request);

}

}

2.后臺接受數(shù)組

(1)前臺ajax請求

var delAdviser = [];

$("input[name='adviserBox']").each(function(){

if($(this).prop("checked") == true){

delAdviser.push($(this).val());

}

});

if(delAdviser.length == 0){

alertModalb("請選擇要刪除的記錄喉钢!");

return false;

}

var url = ctx + "/adviser/deleteAdviser";

alertModal("確定要刪除選擇的記錄?",function(){

$.ajax({

url : url,

type : "post",

dataType:'json',

contentType:"application/json",

data : JSON.stringify(delAdviser),

success : function(data){

if(typeof(data) == "object" && !data.length){

if(data.state == "success"){

alertModalb("刪除成功税课!",function(){

listAdviserInfo(null);

});

}else{

alertModalb(data.mess);

}

}

}

});

});

(2)后臺使用@RequestBody注解

@RequestMapping(value="deleteAdviser",method=RequestMethod.POST)

@ResponseBody

public String deleteAdviser(@RequestBody Integer[] idArr,HttpServletRequest request, HttpServletResponse response){}

3.數(shù)組和其他參數(shù)混合

(1)陆馁、前臺

var arr = [];

var condition = {selectValList:arr,channelId:channel_id,channelType:channel_type}击狮;

$.ajax({

url: ctx + "/mp/channel/changeChannelCustomerStatus",

data:condition,

type:'post',

dataType:'json',

success:function(data){

});

(2)后臺

String[] selectValList = request.getParameterValues("selectValList[]");

String channelId = request.getParameter("channelId");

String channelType = request.getParameter("channelType");

4.數(shù)組字符串和其他參數(shù)組合

(1)前臺

var groupIds = "";

var custIds = "";

groupIds = objInput[i].value +","+groupIds;

custIds = objInput[i].value +","+custIds;

groupIds = groupIds.substring(0,groupIds.length-1);

custIds = custIds.substring(0,custIds.length-1);

$.ajax({

url:ctx+"/mp/channel/saveChannel",

data:{channel_type_val:channel_type, groupIds:obj.groupIds, custIds:obj.custIds},

type:'post',

dataType:'json',

success:function(data){

alertModalb(data.retMsg, function(){

if (data.retCode == 0) {

window.location.href = ctx+"/mp/channel/queryChannelList";

}

});

},

error:function(){

alertModalb("系統(tǒng)異常!")

}

});

(2)后臺

String groupIds = request.getParameter("groupIds");

String custIds = request.getParameter("custIds");

String[] str = productIds.split(",");

for (String productid : str) {

}

5.傳list對象

(1)前臺

var channelAreaList = [];

var proObj = {};

proObj.province = area;

proObj.province_name = $("#selectArea").find("option:selected").text();

obj.city = city;

obj.city_name = item.infoName;

channelAreaList.push(proObj);

$.ajax({

url : requestUrl,

type : 'post',

data : {"channelAreaList":JSON.stringify(channelAreaList),"spuCodes":productIds},

dataType:'json',

success : function(data) {

tipRemove();

if(data.status == 0){

window.location.href = ctx+"/channel/queryChannelList";

}else{

alertModalb(data.msg);

}

},

error : function(XMLHttpRequest, textStatus, errorThrown) {

tipRemove();

alertModalb("保存信息異常档冬,請聯(lián)系管理員!");

}

});

(2)后臺

@ResponseBody

@RequestMapping(value = "/saveAreaData", method = RequestMethod.POST)

public String saveAreaData(HttpServletRequest request, HttpServletResponse response,

@RequestParam(value = "spuCodes",required=true) String spuCodes,@RequestParam(value="channelAreaList", required=true) String channelAreaList){

Map result = new HashMap();

try{

User user = UsermanageUserUtil.getCurrentUser(request);

if(StringUtil.isNotEmpty(channelAreaList) && StringUtil.isNotEmpty(spuCodes)){

String[] spuArr = spuCodes.split(",");

List areaList = JSONObject.parseArray(channelAreaList, ChannelArea.class);

}

6.后臺使用JSONObject對象接受

(1)前臺

var params = {

"enterpriseId": $("#i_enterpriseId").val(),

"type": $(v).attr("type"),

"isRetail": $(v).attr("isRetail")

};

$.ajax({

type: "post",

url: ctx + "/auditDetailDubbo/findAuditDetail",

data: JSON.stringify(params),

dataType: "json",

contentType:"application/json",

success: function(resp){

}

(2)后臺

@ResponseBody

@RequestMapping(value = "/findAuditDetail", method = RequestMethod.POST)

public Map findAuditDetailByEnterpriseIdAndType(HttpServletRequest request, HttpServletResponse response,

@RequestBody JSONObject jsonObj){

int type = jsonObj.getIntValue("type");

int enterpriseId = jsonObj.getIntValue("enterpriseId");

Integer isRetail = jsonObj.getInteger("isRetail");

7.后臺使用JSONArray接受

(1)前臺

var diliveryAreas = [];

$.each($("#deliveryEditDiv a"),function(i,v){

var item = {};

item.enterpriseId = $("#i_enterpriseId").val();

item.province = $(v).attr("data-prov");

item.city = $(v).attr("data-city");

item.district = $(v).attr("data-area");

var o = getAreaName(item.province, item.city, item.district);

item.provinceName = o.provName;

item.cityName = o.cityName;

item.districtName = o.areaName;

diliveryAreas.push(item);

});

$.ajax({

url: ctx + "/deliveryAreaDubbo/saveDft",

data: JSON.stringify(diliveryAreas),

type: 'post',

dataType: "json",

contentType:"application/json",

success: function(data){

if(data.result != "success"){

alertModal("保存失敗");

}

}

});

(2)后臺

@ResponseBody

@RequestMapping(value = "/saveDft", method = RequestMethod.POST)

public Map saveDft(@RequestBody JSONArray deliveryAreas,HttpServletRequest request, HttpServletResponse response){

Map resp = new HashMap();

try {

User currentUser = UsermanageUserUtil.getCurrentUser(request);

String operate = currentUser.getUsername();

String enterpriseId = null;

if (deliveryAreas!=null && !deliveryAreas.isEmpty()) {

JSONObject jsonObject = deliveryAreas.getJSONObject(0);

enterpriseId = jsonObject.getString("enterpriseId");

}

List areaList = new ArrayList();

for(int i=0;i

JSONObject item = deliveryAreas.getJSONObject(i);

UsermanageDeliveryAreaDft deliveryArea = new UsermanageDeliveryAreaDft();

deliveryArea.setEnterpriseId(enterpriseId);

}

}

7.后臺使用jsonstring字符串接受

(1)前臺

var param = {

quaJson:JSON.stringify(params),

isRetail:isRetail

};

$.ajax({

type: "post",

url: ctx + "/qualificationDubbo/saveDft",

data: param,

dataType: "json",

success: function(resp){

if(resp.status=="success"){

initQualificationData();// 刷新數(shù)據(jù)

}

}

});

(2)后臺

@ResponseBody

@RequestMapping(value = "/saveDft", method = RequestMethod.POST)

public Map saveDft(@RequestParam(value="quaJson", required=true) String quaJson,@RequestParam(value="isRetail", required=true) Integer isRetail){

Map result = new HashedMap();

JSONObject jsonObject=JSONObject.parseObject(quaJson);

  QualificationRetailDft quaJava = JSONObject.parseObject(quaJson.toJSONString(), QualificationRetailDft.class);

}

8.

后臺使用jsonstring字符串接受

(1)前臺

$.ajax({

type: "POST",

url: ctx + '/receiverAdressDubbo/saveAddressDft',

data: {

receiverAddressJson: JSON.stringify(params).replace(/]*>/gi, "").replace(/<\/pre>/gi, '')

},

dataType: 'json',

success: function(data){

if( data.result == "success" ){

syncFormData(params,formid);

}else{

alertModal("保存失敗");

}

}

});

(2)后臺

@ResponseBody

@RequestMapping("/saveAddressDft")

public Map? saveAddressDft(HttpServletRequest request, HttpServletResponse response,

@RequestParam("receiverAddressJson") String receiverAddressJson){

logger.info("saveAddressDft begin!");

Map resp = new? HashMap();

try {

User user = UsermanageUserUtil.getCurrentUser(request);

List receiverAddressList = JSON.parseObject(receiverAddressJson, new TypeReference>(){});

}

以后有在遇到一些以上方法滿足不了的情況再繼續(xù)更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末着茸,一起剝皮案震驚了整個濱河市琐旁,隨后出現(xiàn)的幾起案子灰殴,更是在濱河造成了極大的恐慌,老刑警劉巖皱炉,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異灾部,居然都是意外死亡麻削,警方通過查閱死者的電腦和手機呛哟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來者娱,“玉大人黄鳍,你說我怎么就攤上這事框沟∪淘铮” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵队丝,是天一觀的道長奈嘿。 經(jīng)常有香客問我裙犹,道長叶圃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任德崭,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箕慧。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布丈秩。 她就那樣靜靜地躺著,像睡著了一般缀雳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敷硅,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天诫硕,我揣著相機與錄音藕届,去河邊找鬼。 笑死肉盹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纳本。 我是一名探鬼主播窍蓝,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼繁成!你這毒婦竟也來了吓笙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤巾腕,失蹤者是張志新(化名)和其女友劉穎观蓄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祠墅,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡侮穿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了毁嗦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亲茅。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖狗准,靈堂內(nèi)的尸體忽然破棺而出克锣,到底是詐尸還是另有隱情,我是刑警寧澤腔长,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布袭祟,位于F島的核電站,受9級特大地震影響捞附,放射性物質(zhì)發(fā)生泄漏巾乳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一鸟召、第九天 我趴在偏房一處隱蔽的房頂上張望胆绊。 院中可真熱鬧,春花似錦欧募、人聲如沸压状。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽种冬。三九已至镣丑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娱两,已是汗流浹背传轰。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谷婆,地道東北人慨蛙。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像纪挎,于是被迫代替她去往敵國和親期贫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容