簡體   English   中英

如何在Spring MVC繼承中使用@RequestBody批注

[英]How to use the @RequestBody annotation in Spring MVC inheritance

首先,看下面的代碼

public interface DemoInterface {
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    String test(@RequestParam String message);

}

然后,我讓一個類通過注釋實現此接口

@Controller
public 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 **/
}

@Controller
publci 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時,卻無法在test方法中獲取用戶值,但名稱始終空。 我的json是這樣的:

{"name":"Vincent Kang"}

這是因為我無法在繼承的方法中獲得形式參數的注釋嗎? 因為我發現即使在后一種情況下,使用http:// ip:port / test?name = Kanghouchao ,我仍然可以在測試方法中獲得該名稱,因此RequestBody似乎無效。

也許我應該在子類的字段中添加@RequestBody

@Controller
publci class DemoClass implements DemoInterface{
    @Override
    public String test(@RequestBody User user) {
        /** TODO something useing the user's fileds **/
    }
} 

沒關系啦

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM