栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Spring MVC控制器中反序列化单属性JSON有效负载

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Spring MVC控制器中反序列化单属性JSON有效负载

当Spring MVC找到与URL路径匹配的请求映射,但参数(或标头或其他内容)与处理程序方法期望的不匹配时,通常会看到这种类型的错误。

如果使用@RequestBody批注,则Spring MVC希望将POST请求的整个主体映射到Object,默认情况下,它不使用String。

可以采用以下几种不同的方法:

1) 将deleteUser()方法类型的方法类型更改为GET而不是Post,并使用userId作为String。

2) 您只需将HttpServletRequest注入您的方法并读取正文:

public void deleteUser(HttpServletRequest request) {  String userID = IOUtils.toString( request.getInputStream());  // do stuff}

3) 使用可以替换String参数的包装器(JSON对象的Java模型),这也可以与帖子中的json一起正常工作。

public class UserWrapper {    private String userId;    //getter setters

然后在您的控制器中用作:

public void deleteUser(@RequestBody UserWrapper user) {//do your stuff}

4) Spring提供了一种配置多个消息转换器的方法,如下所示: 注意: 然后,对各种方法的请求必须使用适当的值指定“ content-
type”标头。对于那些将请求主体映射到JAXB bean的方法,请指定“ application /
xml”。对于那些请求主体是字符串的用户,请使用“文本/纯文本”。

<bean >    <property name="messageConverters">        <list> <ref bean="jsonConverter" /> <ref bean="marshallingConverter" /> <ref bean="stringHttpMessageConverter" />        </list>    </property></bean><bean id="jsonConverter"      >    <property name="supportedMediaTypes" value="application/json" /></bean><bean id="marshallingConverter"      >    <constructor-arg ref="jaxb2Marshaller" />    <property name="supportedMediaTypes" value="application/xml"/></bean><bean id="stringHttpMessageConverter"      >    <property name="supportedMediaTypes" value="text/plain"/></bean>

希望这对您有所帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号