[英]Sping MVC, Thymeleaf, POST request, how to pass list of objects to controller
[英]Building a controller that changes a variable in a POST request via form (Thymeleaf)
我对如何配置控制器以通过表格更改变量有疑问。 我目前正在使用Thymeleaf进行模板制作,并且遵循Spring文档来设置控制器。
现在,无论何时发出请求,我的控制器都会成功创建类“ Bill”的新实例。
@Controller
public class BudgetController {
@Autowired
private BillBook book;
@GetMapping("/")
public String billForm(ModelMap modelMap, Model model) {
model.addAttribute("bill", new Bill());
modelMap.put("billName", name);
return "home";
}
@PostMapping("/")
public String billSubmit(Model model, @ModelAttribute Bill bill) {
book.addToBillBook(bill);
return "redirect:/";
}
}
...并将其传递到“ BillBook”类的列表中。
@Component
public class BillBook {
private List<Bill> billList;
private int paycheckTotal;
private int difference;
private int billTotal;
public BillBook() {
billList = new ArrayList<>();
paycheckTotal = 0;
difference = 0;
billTotal = 0;
}
public void addToBillBook(Bill bill) {
billList.add(bill);
}
public void setPaycheckTotal(int amount) {
paycheckTotal = amount;
}
public int getPaycheckTotal () {
return paycheckTotal;
}
每当用户将账单名称输入我在Thymeleaf中构建的表单中时,便会执行此操作。
<h1>Form</h1>
<form action="#" th:action="@{/}" th:object="${bill}" method="post">
<p>Bill name <input type="text" th:field="*{name}" /></p>
<p>Bill amount <input type="text" th:field="*{amount}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset"
value="Reset"/></p>
</form>
我知道我仍然需要进行一些更改,以便也包括金额,但是现在效果很好。
但是,我现在要做的是允许用户在表单中输入薪水金额,该金额应存储在BillBook类的“ paycheckTotal”变量中。 我希望这是一个常数-即,用户只能提交一张工资单,并且每次输入新的工资单时,它都会覆盖以前的工资单。
根据我的研究,我认为这应该通过@RequestParam批注完成。 大概是这样吗?
public String billSubmit(Model model, @ModelAttribute Bill bill,
@RequestParam ("paycheckTotal") int paycheckTotal) {
但是我不确定如何在Thymeleaf模板中构造它,以便将其存储在paycheckTotal变量中。
如果有人能告诉我应该如何构造它,那将是非常非常的感激。
<form action="#" th:action="@{/}" th:object="${bill}" method="post">
<p>Bill name <input type="text" th:field="*{name}" /></p>
<p>Bill amount <input type="text" th:field="*{amount}" /></p>
<p>Paycheck total <input type="text" th:value="${paycheckTotal}" th:name="paycheckTotal"/></p>
<p><input type="submit" value="Submit" /> <input type="reset"
value="Reset"/></p>
</form>
如果需要默认值,还可以添加:
model.addAttribute("paycheckTotal", paycheckTotal);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.