Spring 问候语视图和结果视图是否指向同一对象?
在这里,我们的控制器可能返回两个视图中的一个。 在这种情况下,这两个方法签名都包含模型映射和模型属性,视图是否共享对前一个请求句柄加载的模型和模型属性的访问Spring 问候语视图和结果视图是否指向同一对象?,spring,model,request,Spring,Model,Request,在这里,我们的控制器可能返回两个视图中的一个。 在这种情况下,这两个方法签名都包含模型映射和模型属性,视图是否共享对前一个请求句柄加载的模型和模型属性的访问 @Controller public class GreetingController { @GetMapping("/greeting") public String greetingForm(Model model) { model.addAttribute("greeting", new Greeti
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String greetingForm(Model model) {
model.addAttribute("greeting", new Greeting());
return "greeting";
}
@PostMapping("/greeting")
public String greetingSubmit(@ModelAttribute Greeting greeting) {
return "result";
}
}它不指向同一个对象 我假设你正在使用 而且它的代码命名约定相当混乱 请参阅以下测试代码。 我故意更改了URL、变量名 Greeting.java
public class Greeting {
private long id;
private String content;
//... getters and setters
}
欢迎2.java
//created for testing
public class Greeting2 {
private long id;
private String content;
//... getters and setters
}
GreetingController.java
@Controller
public class GreetingController {
@GetMapping("/greeting") // greeting URL and GET request method
public String greetingForm(Model model) {
// th:object="${foo}" in template and thymeleaf
model.addAttribute("foo", new Greeting());
return "greeting_tmpl"; // src/main/resources/templates/greeting_tmpl.html
}
@PostMapping("/greeting_post")
public String greetingSubmit(@ModelAttribute Greeting2 bar) {
//I expected using bar variable in result_tmpl, but it used Greeting2(lowercase) as variable
return "result_tmpl"; // src/main/resources/templates/result_tmpl.html
}
}
src/main/resources/templates/greeting_tmpl.html
...
<body>
<h1>Form</h1>
<form action="#" th:action="@{/greeting_post}" th:object="${foo}" method="post">
<p>Id: <input type="text" th:field="*{id}" /></p>
<p>Message: <input type="text" th:field="*{content}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>
...
<body>
<h1>Result</h1>
<p th:text="'id: ' + ${greeting2.id}" /> <!-- this name should be like bar.id not greeting2 -->
<p th:text="'content: ' + ${greeting2.content}" />
<a href="/greeting">Submit another message</a>
</body>
</html>
。。。
类型
身份证:
信息:
src/main/resources/templates/result\u tmpl.html
...
<body>
<h1>Form</h1>
<form action="#" th:action="@{/greeting_post}" th:object="${foo}" method="post">
<p>Id: <input type="text" th:field="*{id}" /></p>
<p>Message: <input type="text" th:field="*{content}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>
...
<body>
<h1>Result</h1>
<p th:text="'id: ' + ${greeting2.id}" /> <!-- this name should be like bar.id not greeting2 -->
<p th:text="'content: ' + ${greeting2.content}" />
<a href="/greeting">Submit another message</a>
</body>
</html>
。。。
后果
简单地说