我试图编写一个简单的控制器,将POST
数据从HTML表单传送到某个REST端点。
这是我的控制器的样子:
package com.integration.common.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class WebController {
@GetMapping("/form")
public String form(Model model){
model.addAttribute("fieldProps",new FieldProperties());
return "Form";
}
@PostMapping("/form")
public String submit(@ModelAttribute FieldProperties fieldProps){
return "Result";
}
}
我的模特:
package com.integration.common.controller;
public class FieldProperties {
private String owner;
private String storyName;
public String getOwner() {
return owner;
}
public String getStoryName() {
return storyName;
}
public void setOwner(String owner) {
this.owner = owner;
}
public void setStoryName(String storyName) {
this.storyName = storyName;
}
}
最后,我的表格:
<form action="#" th:action="@{/form}" th:object="${fieldProps}" method="post" >
<div class="form-group">
<label for="owner">Owner</label>
<input type="text" id="owner" th:field="*{owner}" class="form-control"/>
</div>
<div class="form-group">
<label for="storyName">Name of Story</label>
<input type="text" id="storyName" th:field="*{storyName}" class="form-control"/>
</div>
<input type="submit" value="Submit" />
</form>
我理解流程是如何工作的,但由于某些原因,我仍然得到这个例外。我是否需要以某种方式将@Autowired
标志合并到我的代码中?我非常关注本教程:https://spring.io/guides/gs/handling-form-submission/
答案 0 :(得分:0)
将模型属性从一个视图传递到另一个视图有两种方法。
一个。您的FieldProperties类变量名称应与“fieldProperties”而不是“fieldProps”相同,并更改html以引用“fieldProperties”。
@Controller
public class WebController {
@GetMapping("/form")
public String form(Model model) {
model.addAttribute("fieldProperties", new FieldProperties());
return "Form";
}
@PostMapping("/form")
public String submit(@ModelAttribute FieldProperties fieldProperties) {
return "resultForm";
}
}
湾如果您不想通过更改变量更改所有位置的代码,请将post方法更改为下方,在方法中再添加一个参数Model model,并再次将fieldProps添加为模型中的属性
@PostMapping("/form")
public String submit(@ModelAttribute FieldProperties fieldProps, Model model) {
model.addAttribute("fieldProps", fieldProps);
return "resultForm";
}