Проблема получения значения в Spring Thymeleaf - PullRequest
0 голосов
/ 08 апреля 2020

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

Вот мой HTML

            <td> 
                <form class="form-inline" action="/infopedidos" th:action="@{/infopedidos}" th:object="${newRider}" method="post">

                    <select> 
                        <option th:each="riders: ${TodosLosRiders}" th:value="${riders.getRider_id()}" th:text="${riders.getRemail()}">
                        </option>                       
                    </select>

                    <button type="submit" value="Submit" class="btn btn-primary">Asignar rider</button>

                </form>
            </td>

И я пытаюсь получить в сообщении значение " riders.getRider_id () "

Вот мой контроллер:

@PostMapping("/infopedidos")
        public String UsuariosIntervaloSubmit(Model model, @ModelAttribute riders newRider, @RequestParam(value="$riders.getRider_id()}") String param) throws ParseException {

И у меня следующая ошибка:

Required String parameter 'riders.getRider_id()' is not present
org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'riders.getRider_id()' is not present

Можете ли вы помочь мне, ребята? ? Спасибо!

1 Ответ

0 голосов
/ 08 апреля 2020

Я предлагаю вам прочитать это: https://www.baeldung.com/thymeleaf-in-spring-mvc

Ваша форма в настоящее время отправляет только ваш объект 'newRider' в виде @ModelAttribute. Но ваш тег выбора не указывает на какое-либо поле в вашем объекте. Это означает, что вы не меняете объект в форме ввода. Только отправив. Вы должны включить атрибут th: field в свой тег select, если хотите отредактировать объект newRider и отправить его по почте.

<select th:field="*{<somefield>}"> 

Ваш контроллер:

 @PostMapping("/infopedidos")
    public String UsuariosIntervaloSubmit(Model model, @ModelAttribute riders newRider ) throws ParseException {

Но если вы хотите отправить данные вашего выбора в качестве параметра запроса, вы должны добавить имя к вашему тегу выбора.

<select th:name="<paramName>"> 

Ваш контроллер:

@PostMapping("/infopedidos")
    public String UsuariosIntervaloSubmit(Model model, @ModelAttribute riders newRider, @RequestParam(value="<paramName>") String param) throws ParseException {

Форма:

<form th:action="@{/<mapping>}" method="post">
            <select class="form-control" name="<paramName>">
                <option th:each="obj : ${objList}"
                        th:value="${obj.field}" th:text="${obj.field2}"></option>
            </select>

Контроллер:

@PostMapping
public String func(@RequestParam("<paramName>") String param, Model model) {
     ** Your Code Here **
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...