解析度
我现在已经设法让它工作了。
是我自己的疏忽导致了 null 结果,感谢@WillKeeling 指出我将表单映射到错误的控制器方法。
我没有为要提交的表单创建一个新的 Role 对象,而是(出于未知原因)要求它提交一个 User 对象。
我在下面工作的 JSP 和控制器:
<form:form method="POST" action="/users/${user.username}/addRole" modelAttribute="newRole">
<div class="input-group">
<span class="input-group-addon">Roles</span>
<form:select class="form-control" path="rolename" multiple="false">
<form:options items="${roles}" title="rolename" itemValue="rolename" itemLabel="rolename" />
</form:select>
<span class="input-group-addon"><input type="submit" value="Add Role" class="btn btn-xs btn-warning"/></span>
</div>
</form:form>
控制器映射
@RequestMapping(value = "/{username}/addRole", method = RequestMethod.POST)
public String addUserRoles(@ModelAttribute("newRole") Role newRole, @PathVariable("username") String username) {
System.out.println(newRole.getRolename());
return "redirect:/users/" + username;
}
原始问题
我可能在这里遗漏了一些明显的东西,但我希望有人能提供帮助。
我正在为我工作的团队构建一个访问管理系统。我在 jsp 上有一个表单(下面的代码),它应该提交一个新的“角色”对象,该对象可以处理到后端的存储库中。
但是,目前,当我单击提交时,该值是“null”的日志记录报告。有人可以解释一下这是为什么吗?
JSP 中的表单
<form:form method="POST" action="/users/${user.username}/addRole" modelAttribute="user">
<div class="input-group">
<span class="input-group-addon">Roles</span>
<form:select class="form-control" path="roles" multiple="false">
<form:options items="${roles}" title="roles" itemValue="rolename" itemLabel="rolename" />
</form:select>
<span class="input-group-addon"><input type="submit" value="Add Role" class="btn btn-xs btn-warning"/></span>
</div>
</form:form>
控制器
原始路径是带有以下控制器的 /users。
@RequestMapping(value = "/{username}/addRole", method = RequestMethod.POST)
public String addUserRoles(@ModelAttribute("user") User user) {
System.out.println(user.getRoles());
return "redirect:/users/" + user.getUsername();
}
控制台中的结果
Role [rolename=null]