используйте Thymleaf и Spring met org.springframework.web.method.annotation.MethodArgumentTypeMismatchException - PullRequest
0 голосов
/ 22 марта 2019

Я запускаю демоверсию Springboot, интегрированную с Thymleaf. Но он продолжает выдавать следующее исключение:

WARN 25302 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver: решено [Org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Не удалось преобразовать значение типа 'java.lang.String' в требуемый тип 'Java.lang.Long'; Вложенное исключение - java.lang.NumberFormatException: Для входной строки: "form.html"] **

контроллер

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired 
    private UserRepository userRepository;
    private List<User> getUserlist() {
        return userRepository.listUser();
    }

    @GetMapping
    public ModelAndView list(Model model) {
        model.addAttribute("userList", getUserlist());
        model.addAttribute("title", "user management");
        return new ModelAndView("users/list", "userModel", model);
    }

    @GetMapping("/form")
    public ModelAndView createForm(Model model) {
        User user=new User();
        user=userRepository.saveOrUpateUser(user);
        model.addAttribute("user", user);
        model.addAttribute("title", "create user");
        return new ModelAndView("users/form", "userModel", model);
    }

list.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <meta charset="UTF-8">
    <title th:text="${userModel.title}">welcome</title>
</head>
<body>
<div th:replace="~{fragments/header :: header}">...</div>
<h3 th:text="${userModel.title}">Welcome to baidu.com</h3>
<div>
    <a href="/users/form.html">create user</a>
</div>
<table border="1">
    <thead>
    <tr>
        <td>ID</td>
        <td>Age</td>
        <td>Name</td>
    </tr>
    </thead>
    <tbody>
    <tr th:if="${userModel.userList.size()} eq 0">
        <td colspan="3">no user info!!</td>
    </tr>
    <tr th:each="user : ${userModel.userList}">
        <td th:text="${user.id}">1</td>
        <td th:text="${user.age}">11</td>
        <td><a href="view.html" th:href="@{'/users/' + ${user.id}}"
               th:text="${user.name}">waylau</a></td>
    </tr>
    </tbody>
</table>
<div th:replace="~{fragments/footer :: footer}">...</div>
</body>
</html>

form.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <meta charset="UTF-8">
    <title th:text="${userModel.title}">users : View</title>
</head>s
<body>
<div th:replace="~{fragments/header :: header}">...</div>
<h3 th:text="${userModel.title}">Welcome to baidu.com</h3>
<div>
    <a href="/users">back to home</a>
</div>
<form action="/users" method="POST" th:object="${userModel.user}">
    <input type="hidden" name="id" th:value="*{id}">
    名称:<br>
    <input type="text" name="name" th:value="*{name}">
    <br>
    年龄:<br>
    <input type="text" name="age" th:value="*{age}">
    <input type="submit" value="提交">
</form>
<div th:replace="~{fragments/footer :: footer}">...</div>
</body>
</html>
 User.java
    import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement // mediatype 转为xml
public class User {

    private long id; // 用户的唯一标识
    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    ....getter and setter
}

на домашней странице все идет хорошо, кроме создать пользователя якорь, который должен вернуть форму для заполнения.

есть идеи?

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