Проверка на стороне клиента (предполагается, что «на стороне клиента» означает «на основе JavaScript») - это миф. Это делает для более приятного пользовательского интерфейса - без вопросов - но это нельзя назвать «проверкой», потому что что-либо , которое приходит от клиента, не может считаться допустимым; пока он не будет проверен на сервере.
Проверка на стороне сервера тоже не монолитная часть - в ней есть как минимум 3 компонента:
- Ограничения хранения данных (например, не ноль, максимальная длина, уникальность, ссылочная целостность и т. Д., Указанные на уровне базы данных).
- Проверка модели домена (проверка правильности ваших сущностей)
- Проверка входных данных клиента (пользовательский интерфейс и, в меньшей степени, проверка на основе API)
Возможно получить # 1 из # 2 - Hibernate Validatior отлично справляется с этим, если вы используете Hibernate в качестве вашего JPA-провайдера.
Также возможно получить проверки на стороне клиента из # 3. Если вы намереваетесь использовать GWT, то рекомендуется использовать GWT VF, рекомендованный Джеффом, поскольку он основан на той же спецификации (JSR-303), что и Hibernate Validator. Если вы собираетесь использовать что-то еще, довольно просто написать код, генерирующий необходимые скриптлеты из аннотаций или правил валидации на основе XML. В прошлом я делал это для элементов управления ExtJS.
Самая большая проблема - это соединение # 2 и # 3 - одна и та же сущность домена может быть представлена многими различными представлениями в пользовательском интерфейсе, каждое со своими правилами валидации; упомянутые правила проверки могут зависеть от состояния объекта и динамически изменяться и т. д. ... AFAIK Нет хорошего способа сделать это автоматически, если ваш пользовательский интерфейс не имеет очень упрощенного типа CRUD 1-к-1.