首页 > 解决方案 > Thymeleaf:检索隐藏输入到控制器的值

问题描述

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

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:fieldand时name="" 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">

有人可以提供帮助或建议吗?提前致谢!

标签: javaspringspring-bootthymeleaf

解决方案


尝试使用以下内容:

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

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


推荐阅读