Ошибка: ни BindingResult, ни простой целевой объект для имени компонента 'id' не доступны в качестве атрибута запроса - PullRequest
0 голосов
/ 27 октября 2018

Я пользуюсь тимьяном и весной. я хочу реализовать почтовый запрос.

мой класс контроллеров

public class URLController {

    @RequestMapping(value = "index")
    public String index1(Model model){
        model.addAttribute("employee",new Employee());
        return "index";
    }

    @RequestMapping(value = "/")
    public String index(Model model){
        model.addAttribute("employee",new Employee());

        return "index";
    }

    @PostMapping("/result")
    public String result(@ModelAttribute Employee employee){
        System.out.print(employee.getName());
        return "result";
    }
}

и HTML-страница

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index page</title>
</head>
<body>
<form action="#" th:action="@{/result}" modelAttribute="employee" method="post">
    <p>Id: <input type="text" th:field="*{id}" /></p>
    <p>name: <input type="text" th:field="*{name}" /></p>
    <p>phone: <input type="text" th:field="*{phone}" /></p>
    <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>


</body>
</html>

нет привязки к полю id.

1 Ответ

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

В вашем HTML вы должны использовать правильный синтаксис для вашего атрибута модели.Spring жалуется, что не может найти свойство id, поскольку вы предоставляете строку employee, а не объект.

modelAttribute="employee" --> th:object="${employee}"

Кроме того, вы можете объединить в:

@Controller //please add this
public class URLController {

    @GetMapping({"/", "/index"})
    public String index1(Model model){
        model.addAttribute("employee",new Employee());
        return "index";
    }

    @PostMapping("/result")
    public String result(@ModelAttribute Employee employee){
        System.out.print(employee.getName()); //use a logger instead
        return "result"; //may want to return a different page name for clarity
    }
}

Ваша IDE не будет жаловаться, если вы измените свой HTML-тег на:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">

Наконец, вы можете захотеть использовать тип ввода telдля телефонного поля.Это позволит отображать пользовательскую клавиатуру для мобильных пользователей.

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