【问题标题】:Thymeleaf form validation with spring MVC使用 Spring MVC 进行 Thymeleaf 表单验证
【发布时间】:2015-08-31 21:20:46
【问题描述】:

这已被问过几次,但他们都没有回答我的问题。两天来,我一直试图让不同的功能与 Thymeleaf 一起工作,但非常不成功。我只能让它与 spring-boot 一起工作,但是现在我正在使用 spring-MVC。

首先我会告诉你我的依赖关系

<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Create a New Account</title>
    <link th:href="@{/resources/css/loginForm.css}" href="/resources/css/loginForm.css" rel="stylesheet"
          type="text/css"/>
</head>
<body>

<form action="#" th:action="@{/createNewAccount}" th:object="${user}" method="post">
    <table>
        <tr>
            <td>Name:</td>
            <td><input type="text" th:field="*{username}" /></td>
            <td th:if="${#fields.hasErrors('name')}" th:errors="*{username}">Name Error</td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type="text" th:field="*{password}" /></td>
            <td th:if="${#fields.hasErrors('age')}" th:errors="*{password}">Password Error</td>
        </tr>
        <tr>
            <td><button type="submit">Submit</button></td>
        </tr>
    </table>
</form>

</body>
</html>

现在您可以看到我的 intellij IDE 显示的错误:

用户.java

package com.practice.domain;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * Created by DrewJocham on 8/30/15.
 */

public class User {

    @NotNull
    @Size(min = 2, max = 30)
    private String username;
    @NotNull
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

【问题讨论】:

    标签: spring spring-mvc thymeleaf


    【解决方案1】:

    您调用hasErrors的字段名称需要与对象中的字段名称匹配。像这样:

    &lt;td th:if="${#fields.hasErrors('username')}" th:errors="*{username}"&gt;Name Error&lt;/td&gt;

    注意hasErrors('name') 变成了hasErrors('username'),并且:

    &lt;td th:if="${#fields.hasErrors('password')}" th:errors="*{password}"&gt;Password Error&lt;/td&gt;

    注意hasErrors('age') 变成了hasErrors('password')

    至于 Intellij 中突出显示的错误,我认为它们具有误导性,并且与这个未解决的问题有关:https://youtrack.jetbrains.com/issue/IDEA-132738

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 2015-07-29
      • 2016-07-15
      相关资源
      最近更新 更多