我正在运行一个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;
}
}
任何帮助或建议将不胜感激! - 谢谢
答案 0 :(得分:0)
首先,您的代码的核心问题是您尝试在非Thymeleaf属性中使用Thymeleaf表达式,它将无法按预期工作。 Thymeleaf只会查看以th:
开头的属性(如果使用HTML5语法,则为data-th-
)。
对于您的情况,我会使用th:object
和th: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>