Проблема с обрезкой NotEmpty в валидаторе гибернации

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


person Marcus Leon    schedule 15.01.2010    source источник


Ответы (3)


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

person Jherico    schedule 15.01.2010
comment
Спасибо, в итоге я написал собственный валидатор. - person Marcus Leon; 15.01.2010

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

person Ken Blair    schedule 07.06.2011
comment
Я бы хотел, чтобы некоторые ограничения Hibernate были включены в JEE6. Я считаю, что набор ограничений JEE6 по умолчанию несколько ограничен! - person Muel; 14.09.2012
comment
Обратите внимание, что @NotEmpty был добавлен в версии 4.1. Для версий до 4.1 вам потребуется специальный валидатор или @Pattern. См. stackoverflow.com/a/17136803/2102634 для более подробного объяснения. - person Rick Hanlon II; 16.06.2013

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

person DavidA    schedule 19.05.2014