加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – @RequestBody无法工作 – 返回Http状态415 Jquery中不支

发布时间:2020-12-16 02:47:02 所属栏目:百科 来源:网络整理
导读:我使用 Spring 3.1开发我的项目.在工作期间,我坚持了一点,真的需要你的帮助. 我的要求来自客户端,我将收到JSON对象,并将返回JSON对象.当我使用从服务器发送的发送和删除请求时,我成功实现了相同的功能.但是当我使用PUT方法发送我的数据时遇到了一些问题.因为
我使用 Spring 3.1开发我的项目.在工作期间,我坚持了一点,真的需要你的帮助.

我的要求来自客户端,我将收到JSON对象,并将返回JSON对象.当我使用从服务器发送的发送和删除请求时,我成功实现了相同的功能.但是当我使用PUT方法发送我的数据时遇到了一些问题.因为PUT无法在@ModelAttribute中接收数据,所以我使用@RequestBody注释来接收从客户端发送的数据.

当我使用@RequestBody MultiValueMap< String,String>身体出错

Http Status 415 unsupported media type.

当我尝试使用@RequestBody DemandBean(我的项目Bean)接收数据时,我收到以下错误.

org.codehaus.jackson.JsonParseException: Unexpected character (‘o’ (code 111)): expected a valid value (number,String,array,object,‘true’,‘false’ or ‘null’)
at [Source: org.apache.catalina.connector.CoyoteInputStream@19 d688; line: 1,column: 2]

但我很确定我已经正确映射了我的jackson库,因为使用@RequestBody我可以将json接收回客户端并且还可以发送Json,并且如果方法是GET,POST,DELETE,则spring可以使用@ModelAttribute进行解析.

下面我给出的代码:

Html FIle发送数据:

var jsonStr = $("#searchDemand_frm").serializeArray();

 $("#searchResultTable td").remove();

 alert(JSON.stringify(jsonStr)); // Return proper form data in json format

 $.ajax({
    contentType : "application/json",dataType : 'json',type : "PUT",url : targetUrl,data : jsonStr,async : false,success : function(data) {
       alert("In Success");
    },error : function(request,status,error) {
       showPermissionDenied(request);
    }
});

Json格式发送到服务器:

[{"name":"opportunityId","value":"ad"},{"name":"dem andId","value":"hgh"},{"name":"demandCreator","val ue":"hghhgh"},{"name":"demandOwner","value":"hg"},{"name":"status","value":"IP"},{"name":"region","v alue":"hgh"}]

-servlet.xml后缀:

<mvc:annotation-driven />

<context:component-scan base-package="com.ericsson.rms.controller.*" />
<context:component-scan base-package="com.ericsson.rms.application.authorizatio n" />
<context:annotation-config/>

<aop:aspectj-autoproxy proxy-target-class="true" />

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
   <property name="messageConverters">
      <list>
         <ref bean="jacksonMessageConverter" />
      </list>
   </property>
</bean>

控制器类:

@RequestMapping(method = RequestMethod.PUT)
public @ResponseBody
   List<DemandBean> searchDemandDetailsWithPut(@RequestBody DemandBean demand,HttpServletResponse response) throws IOException {
}

解决方法

尝试将您从一组对象提交的json更改为包含其他对象的对象,即:

{{"name":"opportunityId","value":"hg"}}

代替

[{"name":"opportunityId","value":"hg"}]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读