2018/1/5 学习记录 Ajax提交数据自动转化为对象
发布时间:2020-12-16 03:14:34 所属栏目:百科 来源:网络整理
导读:SpringMVC中JSON自动转化对象 -在进行api开发时,通过ajax在controller层直接传入一个对象方便又实用,但是细节方面却有很多技巧。 昨天晚上遇到的问题:controller能够识别到参数,但是传入的值全部为空,在网上找了很久,一般的解决办法是设置传入content
public class QueryString {
String vcn;
Integer vol;
String spd;
String textPut;
String textType;
@Override
public String toString() {
return "QueryString{" +
"vcn='" + vcn + ''' +
",vol=" + vol +
",spd='" + spd + ''' +
",textPut='" + textPut + ''' +
",textType='" + textType + ''' +
'}';
}
public String getVcn() {
return vcn;
}
public QueryString setVcn(String vcn) {
this.vcn = vcn;
return this;
}
public Integer getVol() {
return vol;
}
public QueryString setVol(Integer vol) {
this.vol = vol;
return this;
}
public String getSpd() {
return spd;
}
public QueryString setSpd(String spd) {
this.spd = spd;
return this;
}
public String getTextPut() {
return textPut;
}
public QueryString setTextPut(String textPut) {
this.textPut = textPut;
return this;
}
public String getTextType() {
return textType;
}
public QueryString setTextType(String textType) {
this.textType = textType;
return this;
}
}
Controller层: @ResponseBody
@RequestMapping(value = "/api/voice",method = RequestMethod.POST,produces =
MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"
)
public String voice(QueryString queryString) throws Exception {
logger.debug(queryString.toString());
try {
System.out.println(queryString.toString());
Result result = voiceService.getVoice(queryString);
return JSON.toJSONString(result);
} catch (IOException e) {
e.printStackTrace();
throw e;
}
}
Ajax提交的方法: $.ajax({
type: 'post',url: "/api/voice",data: {"vcn": vcn,"vol": vol,"spd": spd,"textPut": textPut,"textType": textType},contentType: "application/x-www-form-urlencoded;charset=utf-8",success: function (res) {
if (0 == res["status"]) {
music = res['data'][0];
$("#urls").html("<a>" + music + "</a>")
$("#show_play").removeAttr('hidden');
$("#show_play button").on('click',function () {
window.location.href = music;
});
} else {
layer.msg(res["msg"]);
}
$("#showTooltips").attr('class',"weui-btn weui-btn_primary");
},error: function (res) {
layer.msg("错误码:" + res.status);
$("#showTooltips").attr('class',"weui-btn weui-btn_primary");
}
});
最好在WEB-INF/web.xml中设置一下乱码过滤器: <!--spring为我们提供的乱码过滤器-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样就基本OK,ajax传入的是一个application/x-www-form-urlencode类型的对象,注意这里不是application/json,也没有通过JSON.stringify()格式化,在controller层中,我们通过直接对方法传入对象,获取到的request的数据的格式是通过RequestMapping指定的: 这样我们就可以通过Springmvc自动转化json参数为对象了。 注: maven中的Spring相关的依赖都是4.3.x (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |