如何将Thymeleaf模板中的隐藏值传递给控制器​​(Spring Boot)?

时间:2017-07-25 20:39:19

标签: java html spring-boot thymeleaf

我正在运行一个Spring Boot项目,并且我尝试使用post方法传递id或对象,但我一直为用户返回null。我想让用户可用,以便在创建摘要页面时(对于单独的表单命中post方法),我从中获得的用户可以添加到摘要对象中。

我也相信可能有办法用锚链接传递id?

这是我的HTML:

        <div >
        <span th:text="${user.firstName}"></span> Summary Page
            <span th:text="${user.emailAddress}"></span>
            <form id="add" th:action="@{/addSummary}" method="post">
                <input id="userId" name="${user.userId}" type="hidden" value="${userId}"/>
          <!-- <input id="userId" name="${user}" type="hidden" value="${user}"/> -->
                <button type="submit" value="save">Add Summary</button>
            </form>
        </div>
<!-- another way to pass id? -->
<!--<a href="createSummary.html?user.id">AddSummary</a>-->

控制器:

    @RequestMapping(value ="/addSummary", method = RequestMethod.POST)
public ModelAndView addSummary(User user) {

    try{
        ModelAndView model = new ModelAndView("views/createSummary");
        System.out.println("======POST Summary Method hit=====");
    //    model.addObject("summary", new Summary());
        User nUser = userService.findById(user.getUserId());
        model.addObject("user", nUser);
        System.out.println("user: " + nUser.getUserId());
        return model;
    }catch(Exception ex){
        System.out.println(ex.toString());
        throw ex;
    }
}

任何帮助或建议将不胜感激! - 谢谢

1 个答案:

答案 0 :(得分:0)

首先,您的代码的核心问题是您尝试在非Thymeleaf属性中使用Thymeleaf表达式,它将无法按预期工作。 Thymeleaf只会查看以th:开头的属性(如果使用HTML5语法,则为data-th-)。

对于您的情况,我会使用th:objectth:field

<form id="add" th:action="@{/addSummary}" method="post" th:object="${user}">
  <input id="userId" th:field="*{userId}" type="hidden"/>
  <button type="submit" value="save">Add Summary</button>
</form>

参考:Creating a Form in the Thymeleaf + Spring tutorial