Spring thymeleaf удалить кавычки в сообщении проверки

Я использую Spring Thymeleaf, и у меня есть сообщения проверки формы во внешнем файле messages.properties.

Когда я ссылаюсь на сообщение следующим образом:

th:attr="data-error=#{field.error.required.field}"

как в следующем объявлении поля ввода:

<input class="form-control input-lg" type="text" th:field="*{firstName}"
       th:attr="data-error=#{field.error.required.field}" required="true"
       data-delay="100" placeholder="First name"/>

Когда сообщение проверки появляется в браузере, оно заключено в кавычки, как показано ниже:

"This is a required field"

Как вывести сообщение без кавычек?

Вот еще некоторые детали кода. Объект модели выглядит так:

public class UserSession {

    @Email
    @NotEmpty
    @Size(min = 2, max = 255)
    private String email;
    ...
}

Ввод формы выглядит так:

<div class="form-group" th:classappend="${#fields.hasErrors('email')} ? has-error">
    <div class="input-group">
        <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
        <input class="form-control input-lg" type="email" id="email"
               th:field="*{email}" th:attr="data-error=#{field.error.invalid.email}"
               required="true" data-delay="100" placeholder="Email"/>
    </div>
    <div class="help-block with-errors" th:errors="*{email}"></div>
    <div class="help-block with-errors"></div>
</div>

Когда я удаляю атрибут data-error и напрямую связываю сообщение со свойством объекта модели, я получаю ошибки по умолчанию, а не свое сообщение.


person broadbear    schedule 05.04.2016    source источник


Ответы (1)


Вам нужно связать @NotBlank/@NotNull с вашим классом формы

вы можете напрямую связать message = "error.message" // ваша переменная свойств

public class UserForm implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @NotBlank(message = "error.message")
    private String firstName;

    @NotBlank(message = "error.message")
    private String lastName;

    // your other filed with Getters and Setters

    ...........................     
}

Ваш HTML-код:

<form role="form" th:action="@{/signup}" method="post" th:object="${userForm}">
    <div class="row">
        <div class="col-lg-12">
            <th:block th:if="${#fields.hasErrors('${userForm.*}')}">
                <div th:utext="Common error message">Alert</div>
            </th:block>

            <div class="form-group input-group" th:classappend="${#fields.hasErrors('firstName')}? 'has-error'">
                <input type="text" th:field="*{firstName}" class="form-control" placeholder="firstName" />
                <span class="help-block" th:if="${#fields.hasErrors('firstName')}" th:errors="*{firstName}">Incorrect title</span>  
            </div>

            // your other filed with submit button          
        </div>
    </div>
</form> 

Примечание :

  • Общее сообщение добавляется в заголовок, если проверка формы не удалась
  • сообщение об ошибке формы добавляется в соответствии с вашим установленным сообщением в классе формы
person Ravi Kavaiya    schedule 06.04.2016
comment
Это не работает для меня. Когда я удаляю атрибут «data-error», по умолчанию используются сообщения об ошибках по умолчанию. Я обновлю вопрос более подробно. - person broadbear; 07.04.2016
comment
Да, потому что вам нужно добавить message внутрь аннотации notEmpty с помощью @NotEmpty(message = key), попробуйте это. в противном случае отображается сообщение по умолчанию - person Ravi Kavaiya; 07.04.2016