th:attr将value属性显示为空字符串

时间:2019-04-01 09:03:08

标签: java html spring spring-boot thymeleaf

我有一个表单,其中使用th:field将输入的数据映射到正确的变量。但是,当页面加载时,我希望输入字段显示默认值。这样,当用户不输入任何数据时,默认值就会映射到该变量。

th:field会覆盖th:value,因此我添加了: th:attr="value=${field.placeholder}",这是我在另一个线程(注释链接)中发现的,但这似乎不起作用。当我检查元素时,它的值显示为:value=""

我知道field.placeholder不为空,因为th:placeholder="${field.placeholder}"确实显示了该值。

<form th:action="@{/generateData}" th:object="${stepObject}" method="post" class="form-group">
  <div th:each="field, iterStat : ${stepEntry.value}">
     <label th:text="${field.name}"></label><input type="hidden" th:field="*{name}" th:attr="value=${field.name}"/>

     <input th:type="${field.type}" class="form-control" th:maxLength="${field.length}"
            th:field="*{value}" th:attr="value=${field.placeholder}" th:placeholder="${field.placeholder}"/>

  </div>
     <button type="submit" class="btn btn-primary" id="generateButton">Generate away!</button>
</form>

因此,在隐藏输入中,其值应为$ {field.name},但值为“”。 在其他输入中,其值应为$ {field.placeholder},但此值也为“”。

关于这是为什么以及如何使它起作用的任何建议?

当我在输入字段中输入数据时,它们被映射到stepObject的value变量。但是重要的是,用户也可以只按按钮而不输入任何内容。

谢谢!

1 个答案:

答案 0 :(得分:0)

我放弃了使用th:field并最终只在控制器方法中使用@RequestParam("form-name-attribute")来获取(默认)值并将其手动设置为正确的对象。

我本来想用百里香叶功能来做的。 因此,如果仍然有人找到解决方案,请告诉我,以便我学习! :-)