フォーム送信時に変数を結果ページに渡そうとしましたが、1回ごとにnullが返されます。どんなに多くのバリエーションを試しても問題ありません。Thymeleafテンプレートのプレースホルダがnullに見つかりません
だから私は、取得しlogin.htmlとポストマップ:User.javaファイルの
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Form</h1>
<form action="#" th:action="@{/demo/login}" th:object="${User2}" method="post">
<p>Username: <input type="text" th:field="*{name}" /></p>
<p>Password: <input type="text" th:field="*{password}" /></p>
<p>Balance: <input type="text" th:field="*{balance}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>
一部:
@Entity // This tells Hibernate to make a table out of this class
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
private String password;
private int balance;
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@GetMapping("/login")
public String greetingForm(Model model) {
model.addAttribute("User2", new User());
return "login";
}
@PostMapping("/login")
public String greetingSubmit(@ModelAttribute User regUser) {
//userRepository.save(regUser);
//String teststr = regUser.getName();
//System.out.println(teststr);
return "result";
}
実際のlogin.htmlには、次のようになります
、result.htmlは
です。それを繰り返し、この行にはnullエラーを投げ続ける:
<p th:text="'username: ' + ${User.name}" />
特に${User.name}
、だから私は、私が考えることができるすべてのものを試してみた
org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'name' cannot be found on null
のように見えるものof、
${User2.name}
${User}
${User2}
${regUser.name}
${teststr}
${#User.name}
など....
私がSystem.out.println(regUser.getName());
のコメントを解除した場合にそれだけで罰金、ユーザーの名前を印刷しますが、変数を渡さないということは非常に奇妙です。それは私のプレースホルダですか、User
オブジェクトなので、th:text
として渡すことはできませんか?私は非常に混乱して助けてください!
編集:チュートリアルを続けました(https://spring.io/guides/gs/handling-form-submission/) チュートリアルをコピーするとうまくいきますが、文字列を渡すだけです。 User.nameは文字列変数になります...