为了账号安全,请及时绑定邮箱和手机立即绑定

Spring MVC继承中如​​何使用@RequestBody注解

Spring MVC继承中如​​何使用@RequestBody注解

弑天下 2021-12-10 15:01:27
首先看下面的代码public interface DemoInterface {    @RequestMapping(value = "/test", method = RequestMethod.GET)    String test(@RequestParam String message);}然后我让一个类用注释来实现这个接口@Controllerpublic class DemoClass implements DemoInterface{    @Override    public String test(String message) {        /** TODO something useing the message **/    }}这没问题,我可以通过http://ip:port/test?message=something访问我的测试方法。但是当我需要传递一个类而不是一个字符串时:public interface DemoInterface {    @RequestMapping(value = "/test", method = RequestMethod.POST,  consumes = "application/json")    String test(@RequestBody User user);}public class User{    private String name;    /** some other fileds、 geters and seters **/}@Controllerpublci class DemoClass implements DemoInterface{    @Override    public String test(User user) {        /** TODO something useing the user's fileds **/    }}这时候虽然可以访问http://ip:port/test,但是在 Google Chrome 浏览器的 Restlet Client 中设置请求体为 json 时,却无法在测试方法中获取到用户值,名称总是空的。我的json是这样的:{"name":"Vincent Kang"}这是因为我无法在继承的方法中获得形式参数的注释吗?因为我发现即使在后一种情况下,使用http://ip:port/test?name=Kanghouchao,我仍然可以在测试方法中获取名称,RequestBody似乎无效。
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

可能我应该在我的子类的字段中添加 @RequestBody


@Controller

publci class DemoClass implements DemoInterface{

    @Override

    public String test(@RequestBody User user) {

        /** TODO something useing the user's fileds **/

    }

现在好了


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 276 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信