Как использовать аннотацию @RequestBody в наследовании Spring MVC - PullRequest
0 голосов
/ 27 октября 2018

Сначала посмотрите на следующий код

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,, когда я задаю тело запроса для json в клиенте рестлета браузера Google Chrome, я не могу получить пользовательское значение в тестовом методе, имя всегда пустое , Мой JSON выглядит так:

{"name":"Vincent Kang"}

Это потому, что я не могу получить аннотации для формальных параметров в методах, которые я наследую? Поскольку я обнаружил, что даже в последнем случае, используя http://ip:port/test?name=Kanghouchao,, я все еще могу получить имя в методе теста, RequestBody кажется недействительным.

1 Ответ

0 голосов
/ 27 октября 2018

Может быть, я должен добавить @RequestBody в поле моего подкласса

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

Теперь все нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...