2010-01-15 4 views
4

Похоже, что аннотация Hibernate NotEmpty не приводит к ошибке для строк, заполненных пробелами (" "). Работает только для нулей или пустых строк (то есть: new String()). Есть ли обходное решение/исправление для этого?Hibernate validator NotEmpty trim issue

ответ

2

Замените @NotEmpty на аннотацию @Pattern, которая содержит выражение регулярных выражений, которое будет терпеть строки, которые являются чистыми пробелами или пустыми (вы можете включить и @NotEmpty и @Pattern и упростить регулярное выражение таким образом). Или напишите специальный валидатор, как описано here.

+0

Спасибо, я закончил тем, что написал пользовательский валидатор. –

11

@NotEmpty используется для проверки размера, а не содержимого и применяется к коллекциям, а также к строкам. Функциональность, которую вы ищете, предоставляется в @NotBlank, которая специфична для строк и игнорирует конечные пробелы.

+0

спасибо, я использую @Length, но у него такая же проблема :) –

+0

Мне жаль, что некоторые ограничения Hibernate не превратились в JEE6. Я считаю, что набор ограничений по умолчанию для JEE6 несколько ограничен! – Muel

+0

Обратите внимание, что '@ NotEmpty' был добавлен в версии 4.1. Для версий до 4.1 вам нужно будет использовать специальный валидатор или '@ Pattern'. См. Http://stackoverflow.com/a/17136803/2102634 для более подробного объяснения. –

7

@NotBlank - это способ проверки длины строк с неявным вызовом отделки.

Смежные вопросы