当我使用 @RequestBody并通过AJAX从前端传递json 时,该对象的所有参数都有效。
对于Ex:@RequestBody人员
人是一个包含姓名和电话信息的豆子。因此,当我从前端传递带有姓名和电话信息的json时,它可以正常工作。
但是当我在json中添加另一个像post_id这样与person对象无关的参数时,它不起作用。它给出了错误说明“客户端发送的请求在语法上不正确()”
注意:我还在spring中添加了 consumemes =“application / json”和 produce =“application / json”,在jquery中我添加了 contentType: “应用程序/ JSON”
答案 0 :(得分:1)
你必须在Jackson使用的ObjectMapper上设置一个参数:
objMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
这是在Spring MVC中设置它的一种方法:
以这种方式定义自定义对象映射器:
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper(){
super.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
super.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
}
注册此自定义ObjectMapper:
<mvc:annotation-driven >
<mvc:message-converters register-defaults="false">
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<property name="objectMapper">
<bean class="....CustomObjectMapper"/>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
此外,在您的请求中,您需要具有“application / json”
的“Accept”标题