【问题标题】:Thymeleaf hidden input value is always nullThymeleaf 隐藏输入值始终为空
【发布时间】:2019-10-11 01:56:59
【问题描述】:

我正在尝试在表单中输入带有值的隐藏输入,但该字段始终为空。

<form th:action="@{/user/subject/join}" th:object="${joinSubjectDTO}" method="post">
            <table>
                <tr>
                    <td>Password to subject:</td>
                    <td><input type="password" th:field="*{password}" /></td>
                    <td><input type="hidden" th:field="*{subjectId}" th:value="${subject.id}"/></td>
                </tr>
                <tr>
                    <td><button type="submit">Join</button></td>
                </tr>
            </table>
        </form>

谁能帮我解决这个问题?

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class JoinSubjectDTO {
    private Integer subjectId;
    private String password;
}

我正在添加 JoinSubjectDTO 类。

【问题讨论】:

  • th:field 覆盖输入的nameidvalue。如果你想默认subjectId,那么你应该在呈现html之前在控制器上设置它。 th:fieldth:value 不能混用。

标签: java html spring-mvc thymeleaf


【解决方案1】:

试试下面一行。无需带 td 标签。把隐藏的标签写在桌子外面。也不要指定 th:value,因为 t:field 它本身就是 id、name 和 value。

<input type="hidden" th:field="*{subjectId}">

【讨论】:

  • 没用,值还是空
  • 你能显示你的 JoinSubjectDTO 类吗?此外,在类级别记录您的对象以确认在 subjectId 或 subject.id 中可用的值?
  • 我在问题中添加了 JoinSubjectDTO 类,并且我正在检查 subject.id 值并且它可用。
  • 您确定您的值在 subject.id 中可用吗?然后只需编辑上面对 的答案,只有当您还从控制器以模式传递主题对象以及 joinSubjectDTO 时,才有可能。
  • subject 是一个具有字段 id 的不同对象,我想将此值传递给 joinSubjectDTO 对象到字段 subjectId,我确定 subject.id 可用,因为我将其打印在屏幕上以进行测试和值是正确的
【解决方案2】:

工作代码是:

<input type="hidden" name="subjectId" th:value="${subject.id}">

【讨论】:

  • 我用 id 替换了 name 并且效果很好 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 2010-11-06
  • 2017-05-30
  • 1970-01-01
相关资源
最近更新 更多