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

在Spring MVC 4.0中自动转换JSON表单参数

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

在Spring MVC 4.0中自动转换JSON表单参数

Spring

@RequestMapping
通过反射调用您的方法。为了解决传递给调用的每个参数,它使用的实现
HandlerMethodArgumentResolver
。对于带
@RequestParam
注释的参数,它使用
RequestParamMethodArgumentResolver
。此实现将请求参数绑定到单个对象,通常是a
String
或某种
Number
类型。

但是,您的用例很少见。您很少收到

json
请求参数, 这就是为什么我认为您应该重新考虑设计的原因
,但是如果您别无选择,则需要注册一个自定义项
PropertyEditor
,以将请求参数的
json
值转换为自定义类型。

@InitBinder
在您的
@Controller
类中使用带注释的方法注册很简单

@InitBinderpublic void initBinder(WebDataBinder dataBinder) {    dataBinder.registerCustomEditor(MyMessage.class, new PropertyEditorSupport() {        Object value;        @Override        public Object getValue() { return value;        }        @Override        public void setAsText(String text) throws IllegalArgumentException { value = new Gson().fromJson((String) text, MyMessage.class);        }    });}

在这种情况下,我们不需要

PropertyEditor
接口的所有方法,因此我们可以使用
PropertyEditorSupport
,这是一个有用的默认实现
PropertyEditor
。我们只需实现我们所关心的两种方法,即可使用所需的任意一种JSON解析器。我用过,
Gson
因为它可用。

当Spring看到它具有您请求的请求参数时,它将检查参数类型,找到该类型

MyMessage
并寻找该类型的注册
PropertyEditor
对象。它将找到它,因为我们已对其进行注册,然后它将使用它来转换值。

您可能需要

PropertyEditor
根据下一步执行其他方法。

我的建议是永远不要将JSON作为请求参数发送。
将您的请求内容类型设置为

application/json
,并将发送
json
为请求的正文。然后使用
@RequestBody
解析它。



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

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

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