我的应用程序存在一个问题:我将给出一个嵌套参数给后台,它显示参数放在HTTP请求的TextView
部分。我想用@RequestBody
来获取参数,但是一旦我在参数前面键入@RequestBody
注释,我将得到一个错误〜。使用嵌套参数的Ajax请求,在函数中使用@requestBody得到415错误
JS
$.ajax({
url:"maintenance/clientSystem/updatePriceHierarchy.html",
data: {"post":"515", "person":{"personId":"162"}},
dataType:"json",
type:"POST",
contentType: "application/json"
}).done(function(data){
console.log("finish");
});
控制器
@RequestMapping("client/updatePerson")
public final void updatePerson(HttpServletResponse response, Person bean) throws Exception {
System.out.println(bean.getPersonId());
}
弹簧MVC配置
<!-- for local resources -->
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/images/**" location="/images/"/>
<mvc:resources mapping="/images/deskTopIcon/**" location="/images/deskTopIcon/"/>
<mvc:resources mapping="/images/deskTopImg/**" location="/images/deskTopImg/"/>
<!-- scan package -->
<context:component-scan base-package="com.jesse.controller" />
<!-- add annotation driver -->
<mvc:annotation-driven />
<!-- define prefix and suffix for view -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/pages/" /> <property name="suffix"
value=".jsp" />
</bean>
<bean class ="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name= "messageConverters" >
<list>
<ref bean= "stringHttpMessageConverter" />
<ref bean="jacksonMessageConverter" />
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean id = "stringHttpMessageConverter" class = "org.springframework.http.converter.StringHttpMessageConverter" />
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1000000"/>
</bean>
<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
任何人都可以帮助我吗?
您已经添加了'MappingJacksonHttpMessageConverter'两次,你没有因为消息来指定'supportedMediaTypes'转换器会照顾它。简而言之,从上下文中移除'jsonHttpMessageConverter' bean。您也不必显式声明'AnnotationMethodHandlerAdapter'。它将被默认注册。如果你在类路径上有Jackson,它会自动为它注册一个转换器。 – Bart
@Bart好的,我会修改我的spring-servlet.xml。但我不认为这是关键。 – Jesse