Как связать данные формы в модель с помощью Spring Boot? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть эта форма:

<form action="/my-path" method="post">
    <div class="form-group">
        <label for="domain">Domain</label>
        <input class="form-control" id="domain" type="text" value="" name="domain">
        <label for="color">Color</label>
        <input class="form-control" id="color" type="text" value="" name="color">
    </div>
    <button class="btn btn-primary" type="submit">Filter</button>
</form>

, которую я пытаюсь обработать в Spring MVC:

@PostMapping(
        path = ["/my-path"],
        produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(ModelMap map) {
    // ...
}

, но я просто не могу заставить это работать, я не вижуданные поступают из POST, даже когда я заполняю форму данными и отправляю ее.

Я пытался привязать значения к своему собственному dto:

@PostMapping(
        path = ["/my-path"],
        produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(@RequestBody MyDto dto) {
    // ...
}

, но в этом случае я получаюисключение, потому что метод не поддерживается (URL-кодированная форма).Я в недоумении, я попробовал 10 различных способов получить данные формы из запроса, но это не работает, я либо получаю исключения, либо вообще не получаю данных.

Каксделать этот довольно простой вариант использования для работы с Spring Boot?

1 Ответ

0 голосов
/ 27 июня 2019

Если вы хотите получить все параметры запроса на карте, вы можете добавить в функцию параметр @RequestParam Map, например:

@PostMapping(
        path = ["/my-path"],
        produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(@RequestParam Map allRequestParams) {
    // ...
}

Если вы хотите получить каждый компонент формы в отдельной переменной, вы можете использовать что-то вроде этого:

@PostMapping(
        path = ["/my-path"],
        produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(String domain, String color) {
    // ...
}

Spring автоматически свяжет входные данные формы с вашими параметрами, сопоставляя атрибуты input 'id' с именами параметров.

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