Какую веб-инфраструктуру Java выбрать для проверки на стороне клиента и на стороне сервера? - PullRequest
3 голосов
/ 18 ноября 2009

В настоящее время мы ищем инфраструктуру java, которая легко выполняла проверку на стороне сервера, и обе стороны: Spring, Hibernate, Play - это выбор платформы, которые мы ищем, мы используем разработку на основе аннотаций, и эта среда будет определять Выбор javascript тоже. Что является лучшей структурой (архитектурно) при операциях проверки как на стороне клиента, так и на стороне сервера?

Ответы [ 6 ]

5 голосов
/ 18 ноября 2009

Новый Spring 3 (который находится на RC2 и вскоре должен быть завершен) имеет ряд полезностей, которые помогут вашему делу в сочетании с Hibernate. Обычно проверяют модель после привязки к ней пользовательского ввода. Spring 3 обеспечивает поддержку декларативной проверки с помощью JSR-303. Эта поддержка включается автоматически, если в вашем пути к классам присутствует поставщик JSR-303, такой как Hibernate Validator. Когда эта функция включена, вы можете запустить проверку, просто добавив аннотацию к методу Controller @Valid:

@RequestMapping(value = "/appointments", method = RequestMethod.POST)
public String add(@Valid AppointmentForm form, BindingResult result) {
    ....
}

public class AppointmentForm {

    @NotNull @Future
    private Date date;
}

После привязки входящих параметров POST, AppointmentForm будет проверен; в этом случае для проверки значение поля даты не является нулевым и возникает в будущем.

Таким образом, это значительно упрощает проверку по вашей доменной модели, и вы можете свободно использовать любую библиотеку Javascript в клиентской части, будь то Jquery, Extjs и т. Д. Я широко использовал виджеты Extjs в Spring без какой-либо гибкости, я ожидаю то же самое из Jquery и любой другой в этом отношении. Существует также Spring-js , который вы можете посмотреть и оценить его достоинства для вашего варианта использования.

4 голосов
/ 18 ноября 2009

Проверка на стороне клиента (предполагается, что «на стороне клиента» означает «на основе JavaScript») - это миф. Это делает для более приятного пользовательского интерфейса - без вопросов - но это нельзя назвать «проверкой», потому что что-либо , которое приходит от клиента, не может считаться допустимым; пока он не будет проверен на сервере.

Проверка на стороне сервера тоже не монолитная часть - в ней есть как минимум 3 компонента:

  1. Ограничения хранения данных (например, не ноль, максимальная длина, уникальность, ссылочная целостность и т. Д., Указанные на уровне базы данных).
  2. Проверка модели домена (проверка правильности ваших сущностей)
  3. Проверка входных данных клиента (пользовательский интерфейс и, в меньшей степени, проверка на основе API)

Возможно получить # 1 из # 2 - Hibernate Validatior отлично справляется с этим, если вы используете Hibernate в качестве вашего JPA-провайдера.

Также возможно получить проверки на стороне клиента из # 3. Если вы намереваетесь использовать GWT, то рекомендуется использовать GWT VF, рекомендованный Джеффом, поскольку он основан на той же спецификации (JSR-303), что и Hibernate Validator. Если вы собираетесь использовать что-то еще, довольно просто написать код, генерирующий необходимые скриптлеты из аннотаций или правил валидации на основе XML. В прошлом я делал это для элементов управления ExtJS.

Самая большая проблема - это соединение # 2 и # 3 - одна и та же сущность домена может быть представлена ​​многими различными представлениями в пользовательском интерфейсе, каждое со своими правилами валидации; упомянутые правила проверки могут зависеть от состояния объекта и динамически изменяться и т. д. ... AFAIK Нет хорошего способа сделать это автоматически, если ваш пользовательский интерфейс не имеет очень упрощенного типа CRUD 1-к-1.

2 голосов
/ 18 ноября 2009

Добавляя к ChssPly76, вы можете использовать аннотированные сущности Hibernate (или javax.validation в последней версии) непосредственно в вашем пользовательском интерфейсе, применяя те же правила проверки автоматически, также если вы используете RichFaces . В нем есть компонент beanValidator, который читает вышеупомянутые аннотации.

RichFaces (и JSF), в отличие от GWT, допускают больше веб-страниц в стиле документа, чем в стиле приложения.

1 голос
/ 18 ноября 2009

Есть Проверка GWT . Он предназначен для объединения проверки на стороне клиента и на стороне сервера.

0 голосов
/ 18 ноября 2009

Вы также можете поискать библиотеку компонентов JSF с ajaxical соусом. Однако они в основном выполняют только проверку на стороне сервера, но для этого используют ajax. Примеры: RichFaces (также входит в Шов ), PrimeFaces и IceFaces .

0 голосов
/ 18 ноября 2009

Я бы сказал, что Spring Framework - лучший. Некоторое время мы использовали комбинацию Spring - Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...