我是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>
无论我做什么,它总是抛出此异常。 我已经将自己的代码与互联网上的多个代码进行了比较,我使用了我认为的所有必要内容。我敢打赌我错了。 也许有些东西被弃用了? 如果您需要更多信息,代码或堆栈跟踪,请告诉我。
非常感谢您的帮助!
答案 0 :(得分:0)
尝试删除@ModelAttribute(“ user”),@ ModelAttribute用于访问请求属性,表单数据位于请求正文或参数中。