spring没有从表单提交中读取模型属性

2jcobegt  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(535)

在我当前的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);
  }

但也有同样的问题。

a9wyjsp7

a9wyjsp71#

我设法解决了这个问题,改变了参数:

@ModelAttribute("usuario") Usuario object

收件人:

@ModelAttribute("command") Usuario object

遵循上述评论中的建议(来自m.deinum)

相关问题