Thymeleaf注册表单引发IllegalStateException

时间:2019-01-04 22:11:37

标签: java spring spring-boot spring-security thymeleaf

我是Spring Boot 2.1.1的学习者。我为我的网站做了一张注册表。

我的register.html上有一张表格:

<form method="post" th:action="@{/reg}" th:object="${user}">
   <input type="text" name="email" th:field="*{emailAddress}">Email 
   address</input>
   <input type="text" name="password" th:field="* 
   {password}">Password</input>
   <button type="submit">Submit</button>
</form>

我已将User用户对象注入Controller中的模型中:

@RequestMapping("/register")
public String register(Model model){
    System.out.println("marker 0");   
    model.addAttribute("user", new User());
    System.out.println("marker 1");
    return "register"; //returns the register.html view
}

这些标记未出现在控制台上。

这是应该捕获从register.html发送回的数据的代码:

@PostMapping("/reg")
    public String registerConfirmation(@ModelAttribute("user") User user, 
    Model model){
        // some code to proccess data
        return "registerconfirmation";
    }

用户是具有getter和setter的简单实体:

@Entity
public class User implements Serializable {

@Id
private Long id;


private String emailAddress;
private String password;
private String firstName;
private String lastName;
private int zipCode;


public User(){

}

这是我的例外:

Caused by: java.lang.IllegalStateException: Neither BindingResult nor 
plain target object for bean name 'user' available as request attribute

关于依赖关系:

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

<dependency>
   <groupId>org.thymeleaf.extras</groupId>
   <artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>

无论我做什么,它总是抛出此异常。 我已经将自己的代码与互联网上的多个代码进行了比较,我使用了我认为的所有必要内容。我敢打赌我错了。 也许有些东西被弃用了? 如果您需要更多信息,代码或堆栈跟踪,请告诉我。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试删除@ModelAttribute(“ user”),@ ModelAttribute用于访问请求属性,表单数据位于请求正文或参数中。