Thymeleaf: не удается обработать форму ввода Spring Boot - PullRequest
0 голосов
/ 04 июня 2018

Я новичок в разработке веб-приложений и хочу создать страницу входа для своего веб-приложения (используя Spring boot + Thymeleaf), но не могу отобразить form.html, когда делаю запрос на /form.

Это мой Entity класс:

 package com.example.springboot.model;

    public class ApplicationUser {
    private String username;
    private String password;

    public ApplicationUser(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public ApplicationUser() { }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Мой form.html выглядит так:

 <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Form Submission</title>
</head>
<body>
    <h1>User form</h1>
    <form action="#" th:action="@{/form}" th:object="${applicationuser}" method="post">
        <p>Username: <input type="text" th:field="*{username}"/></p>
        <p>Password: <input type="text" th:field="*{password}"/></p>
        <p><input type="submit" value="Send"/></p>
    </form>
</body>
</html>

А result.html это

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Result</title>
</head>
<body>
    <h1>Result</h1>
    <p th:text="'username: ' + ${applicationuser.username}"/>
    <p th:text="'password: ' + ${applicationuser.password}"/>
    <a href="/form">Submit another</a>
</body>
</html>

Но applicationuser из th:object="${applicationuser}" выделен красным цветом ("не удается разрешить" applicationuser "). Может ли это быть проблемой? Как ее решить?

Мой Controller класс

 @RestController
public class Test {

    @RequestMapping(value = "/form",method = RequestMethod.GET)
    public String userForm(Model model){
        model.addAttribute("applicationuser",new ApplicationUser());
        return "form";
    }

    @RequestMapping(value = "/form",method = RequestMethod.POST)
    public String userSubmit(@ModelAttribute ApplicationUser user,Model model){
        model.addAttribute("applicationuser",user);
        String info = String.format("User Submission: username = %s, password = %s", user.getUsername(),user.getPassword());
        System.out.println(info);
        return "result";
    }
}

Я просто пытаюсь получить форму ввода и отобразить ее в консоли, но никак ... Когда я делаю запрос в своем браузере: http://localhost:8080/form Я получаю белую страницу со следующей строкой"form", он не отображает текстовые поля и кнопку. У меня в pom.xml есть зависимость thymeleaf:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

Кто-нибудь знает, в чем проблема с моим кодом?

1 Ответ

0 голосов
/ 04 июня 2018

Кажется, у меня есть твоя проблема.Измените этот раздел

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">  

на

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

И измените свой

<p>Username: <input type="text" th:field="*{username}"/></p>
<p>Password: <input type="text" th:field="*{password}"/></p>

на

  <p>Username: <input type="text" id="username" name="username"/></p>
  <p>Password: <input type="text" id="password" name="password" /></p>

Еще одна вещь, изменить вас@RestController до @Controller Если это сработает, дайте мне знать.

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