【问题标题】:How to add default values to input fields in Thymeleaf如何将默认值添加到 Thymeleaf 中的输入字段
【发布时间】:2021-08-13 16:05:04
【问题描述】:

我在 Spring 中编程并使用 Thymeleaf 作为我的视图,并尝试创建一个表单,用户可以在其中更新他们的个人资料。我有一个个人资料页面,其中列出了用户的信息(名字、姓氏、地址等),并且有一个链接显示“编辑个人资料”。当点击该链接时,它会将他们带到一个表单,他们可以在其中编辑他们的个人资料。该表单由他们可以输入的文本字段组成,就像您的标准注册表单一样。

一切正常,但我的问题是,当单击该链接时,我如何将用户信息添加到输入字段中,以便它已经存在,并且他们只修改他们想要更改的内容,而不是必须重新输入所有字段。

这应该就像标准的“编辑个人资料”页面一样。

这是我的 edit_profile.html 页面的一部分:

名字:

这里是返回edit_profile.html页面的视图控制器方法:

@RequestMapping(value = "/edit", method = RequestMethod.GET)
    public String getEditProfilePage(Model model) {
        model.addAttribute("currentUser", currentUser);
        System.out.println("current user firstname: " + currentUser.getFirstname());
        model.addAttribute("user", new User());
        return "edit_profile";
    }

currentUser.getFirstname() 打印出预期值,但我在表单中得到空白输入值。

谢谢。

【问题讨论】:

    标签: html spring spring-mvc thymeleaf


    【解决方案1】:

    通过完全删除th:field 并使用th:value 来存储默认值,并使用html nameid 来存储模型字段来解决问题。所以nameid 的行为就像th:field

    【讨论】:

      【解决方案2】:

      我有点困惑,您正在将 currentUser 和一个新的用户对象添加到模型映射中。

      但是,如果 currentUser 是目标对象,您只需这样做:

      <input type="text" name="firstname" value="James" th:value="${currentUser.firstname}" />

      来自文档: http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html

      【讨论】:

      • 不,我要显示对象“currentUser”的当前信息。输入新字段后,它们将存储在“用户”中,“用户”对象作为 PUT 请求发送以更新字段。
      • 然后你试图将两个不同的状态绑定到一个字段,我可以看到完成的唯一方法是通过一些 javascript 技巧。
      【解决方案3】:

      我没有带有输入元素的表单,只有一个按钮,它应该调用特定的 Spring Controller 方法并在列表中提交动物的 ID(所以我的页面上已经显示了动物列表)。我挣扎了一些时间来弄清楚如何在表单中提交这个 id。这是我的解决方案:

      所以我开始制作一个只有一个输入字段的表单(最后我会更改为隐藏字段)。在这种情况下,提交表单后 id 当然是空的。

      <form action="#" th:action="@{/greeting}" th:object="${animal}" method="post">
          <p>Id: <input type="text" th:field="*{id}" /></p>
          <p><input type="submit" value="Submit" /> </p>
      </form>
      

      以下没有抛出错误,但也没有提交 animalIAlreadyShownOnPage 的 ID。

      <form action="#" th:action="@{/greeting}" th:object="${animal}" method="post">
          <p>Id: <input type="text" th:value="${animalIAlreadyShownOnPage.id}" /></p>
          <p><input type="submit" value="Submit" /> </p>
      </form>
      

      在另一个帖子中,用户推荐了“th:attr”属性,但它也不起作用。

      这终于奏效了——我只是添加了名称元素(“id”是 Animal POJO 中的字符串属性)。

      <form action="#" th:action="@{/greeting}" th:object="${animal}" method="post"> 
          <p>Id: <input type="text" th:value="${animalIAlreadyShownOnPage.id}" name="id" /></p>                            
          <p><input type="submit" value="Submit" /> </p>
      </form> 
      

      【讨论】:

      • 其他重点不同的是添加了属性名
      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 2016-01-30
      • 2013-10-20
      • 2023-03-20
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      相关资源
      最近更新 更多