在我当前的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>
由该弹簧控制器处理:
@RequestMapping(value = "/register",method=RequestMethod.POST)
@ResponseBody
public void doRegister(@Valid Usuario object,BindingResult result) throws Exception {
this.serv.register(object);
}
我的问题是object
正在获取空值,不允许程序保留数据。同时显示变量object
和result
的内容,它们显示为null;但是,如果我尝试通过以下方式显示参数的值:
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);
}
但是有同样的问题。