Что такое @RequestParam и как он заполняется? - PullRequest
4 голосов
/ 28 декабря 2011

В документации Spring указано:

Используйте аннотацию @RequestParam для привязки параметров запроса к параметру метода в вашем контроллере.

source: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestparam

AFAIK, параметры запроса - это переменные, извлекаемые из строк запроса, если метод запроса GET.Они также являются переменными, полученными из значений формы, когда метод запроса POST.Я проверил это, используя простой JSP, который отображает параметры запроса через метод request.getParameter ("key").

Но мне кажется, что @RequestParam работает только с запросами метода GET.Он может получать значения только из строк запроса.

Это ошибка в документации?Может кто-нибудь привести мне некоторую документацию, в которой точно описывается, для чего используется @RequestParam, для чего он не может использоваться и как он заполняется?

Могу ли я использовать @RequestParam для методов POST для получения значений формы?Если я не могу использовать @RequestParam, что еще я могу использовать?Я пытаюсь избежать вызова request.getParameter ("ключ").

Ответы [ 3 ]

6 голосов
/ 28 декабря 2011

Работает и с постами.Можете ли вы опубликовать ваше тело метода, и вы HTML?

0 голосов
/ 14 сентября 2015

Вместо @RequestParam, который привязывается к одному значению формы, вы можете использовать аннотацию @ModelAttribute и привязать весь объект.Но его следует использовать вместе с form или bind JSTL Spring.

Пример: - контроллер, вызывающий JSP-страницу, он должен добавлять объекты в модель:

@RequestMapping(value="/uploadForm", method=RequestMethod.GET)

public String showUploadForm (модель) {

Artist artist = new Artist();
Track track = new Track();

model.addAttribute("artist", artist);
model.addAttribute("track", track);


return "uploadForm";

}

  • JSP может выглядеть примерно так:

Заголовок дорожки *:

  • Контроллер, обрабатывающий отправку формы;

    @ RequestMapping (value = "/ uploadToServer", method = RequestMethod.POST)

    public String uploadToServer (@ModelAttribute)("artist") Artist artist, @ModelAttribute ("track") Track track) {....}

Здесь я нашел хорошее объяснение использования аннотации @ModelAttribute - krams915.blogspot.ca

0 голосов
/ 10 сентября 2014

Да, это прекрасно работает и с методом post.Вы можете упомянуть атрибут метода @RequestParam как RequestMethod=POST.Вот фрагмент кода

@RequestMapping(value="/register",method = RequestMethod.POST)

public void doRegister
(

    @RequestParam("fname") String firstName,
    @RequestParam("lname")String lastName,
    @RequestParam("email")String email,
    @RequestParam("password")String password 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...