Thymelaf:检索控制器的隐藏输入值



我正试图通过创建提交按钮来获取存储在隐藏输入中的值。但是程序不会将值绑定到对象。

HTML文件

<form th:method="POST" th:action="@{/client/1/allprocedures}" th:object="${treatment}">
<input type="hidden" th:value="${treatment.ClientID}" name="1" id="1">
<input type="hidden" th:value="${treatment.ProcedureID}" name="128" id="128">
<input class="btn btn-outline-primary btn-sm mt-2 w-100" type="submit" value="Buy"/>
</form>

控制器

@GetMapping("/{id}/allprocedures/add")
public String addProcedure(Model model){
model.addAttribute("treatment", new Treatment());
return "addProcedure";
}
@PostMapping("/{id}/allprocedures")
public String saveProcedure(@ModelAttribute("treatment") Treatment treatment,
@PathVariable("id") int id,
BindingResult bindingResult){
if(bindingResult.hasErrors())
return "procedurelist";
return "redirect:/client/"+ id +"/allprocedures";
}

治疗模式

public class Treatment {
private int ClientID, ProcedureID;
}
// constructor, getters and setters

控制器工作正常。当我使用文本输入手动输入数据时,程序按如下方式工作:

<form th:method="POST" th:action="@{/client/1/allprocedures}" th:object="${treatment}">
<input type="text" th:field="${treatment.ClientID}">
<input type="text" th:field="${treatment.ProcedureID}">
<input class="btn btn-outline-primary btn-sm mt-2 w-100" type="submit" value="Buy"/>
</form>

同时,当我使用th:fieldname="" id=""时,它也不起作用。我也尝试过使用th:value="name="",但它不起作用:

<input type="hidden" th:field="${treatment.ClientID}" th:attr="name=1">
<input type="hidden" th:field="${treatment.ProcedureID}" th:attr="name=128">

有人能提供帮助或建议吗?提前感谢!

尝试使用以下方法:

<input type="hidden" th:field="*{ClientID}">
<input type="hidden" th:field="*{ProcedureID}">

请注意使用了*而不是$。此外,th:field属性中的值是由th:object属性指定的对象的属性。th:field将为您呈现id和name属性。

<input type="text" hidden th:field="*{ClientID}" th:value="${treatment.ClientID}">

这样的东西应该行得通。

最新更新