在我当前的spring boot项目中,我有以下表单:
<form class="form-container" id="form" method="post" th:object="${command}" th:action="@{/usuario/register}">
...
<div class="form-row">
<div class="col-25">
<label for="login">Login</label>
</div>
<div class="col-75">
<input type="text" id="login" th:field="*{username}" placeholder="Login">
</div>
</div>
...
</form>
由Spring控制器处理:
@RequestMapping(value = "/register", method=RequestMethod.POST)
@ResponseBody
public void doRegister(@Valid Usuario object, BindingResult result) throws Exception {
this.serv.register(object);
}
我的问题是 object
正在获取空值,不允许程序持久化数据。显示两个变量的内容 object
以及 result
,表示空;但如果我尝试用以下方式显示参数值:
System.out.println("result.model.username: "+result.getModel().get("username"));
显示正确的值。这里有什么问题,为什么 @Valid Usuario object, BindingResult result
给我一个空值,但是 HttpServletRequest
获取正确的值?
更新
基于下面的建议,我尝试一下:
@ModelAttribute(value = "usuario")
public Usuario newEntity()
{
return new Usuario();
}
@RequestMapping(value = "/register", method=RequestMethod.GET)
public String formRegister(Model model) {
model.addAttribute("command", newEntity());
return "register";
}
@RequestMapping(value = "/register", method=RequestMethod.POST)
@ResponseBody
public void doRegister(@ModelAttribute("usuario") Usuario object) throws Exception {
this.serv.register(object);
}
但也有同样的问题。
1条答案
按热度按时间a9wyjsp71#
我设法解决了这个问题,改变了参数:
收件人:
遵循上述评论中的建议(来自m.deinum)