【问题标题】:Spring not reading model attributes from form submissionSpring不从表单提交中读取模型属性
【发布时间】:2020-03-12 18:35:39
【问题描述】:

在我当前的 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 得到一个空值,不允许程序持久化数据。显示两个变量objectresult 的内容,它们显示为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);
  }

但是遇到了同样的问题。

【问题讨论】:

  • 检查这是否有帮助:stackoverflow.com/questions/32045271/…
  • @user3487063 我已尝试将我的代码修改为与您建议的答案中的代码相似(请参阅更新),但遇到了同样的问题。
  • 您的模型对象被命名为命令(根据您的百里香叶形式)。您有 2 个相同类型的模型对象。一个命名为命令,另一个命名为usuario。后者在您的方法中使用,因此不绑定。

标签: spring forms spring-boot request submission


【解决方案1】:

我设法通过更改参数解决了这个问题:

@ModelAttribute("usuario") Usuario object

到:

@ModelAttribute("command") Usuario object

遵循上述评论中的建议(来自 M.Deinum)

【讨论】:

    猜你喜欢
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2019-03-29
    相关资源
    最近更新 更多