Подходит ли JAX-RS в качестве инфраструктуры MVC? - PullRequest
15 голосов
/ 30 января 2010

JAX-RS имеет некоторую поддержку MVC , но мне интересно, действительно ли JAX-RS является хорошим выбором для создания веб-приложения для использования человеком.

Если пользователь вводит неправильную или неполную информацию в форму, она должна отображаться снова, как с Grails или Wicket. Есть ли удобный способ сделать это с JAX-RS?

Насколько я знаю, отображение URI работает некорректно, если заданы не все обязательные параметры или есть проблемы с преобразованием типов (например, с датой). Это правильно?

Есть ли поддержка интернационализированных шаблонов?

Вот пример для простого приложения с графическим интерфейсом на основе JAX-RS . Но это действительно просто, и такие вещи, как i18n и валидация не обсуждаются.

Ответы [ 6 ]

5 голосов
/ 17 июня 2010

Да, вы можете, но вы должны очистить свою голову от старой модели пост-поста и начать думать о вашем приложении как об отключенном интерфейсе пользователя, который взаимодействует с RESTful SOA. Когда вводятся данные формы, они отправляют в конечную точку службы, если данные неверны, вы отвечаете с ошибкой, и пользовательский интерфейс обрабатывает эту ошибку. Вы не публикуете формы на сервере в традиционной модели постраничного размещения, а выполняете RPC-вызовы в своей серверной системе. Ваше представление становится полностью отделенным от остальной части стека MVC. Это делает замену вида на пользовательский мобильный или систему IVR чрезвычайно простой.

Если пользователь вводит неверную или неполную информацию в форму, она должна отображаться снова, как с Grails или Wicket. Есть ли удобный способ сделать это с JAX-RS?

С помощью многофункционального интернет-приложения вам не нужно повторно заполнять данные, потому что вы никогда не покидали страницу, на сервер делается XHR-вызов и либо возвращается 200 успешных результатов, либо ошибка. Пользовательский интерфейс затем решает, что делать, основываясь на этом ответе, но страница все еще остается неповрежденной, потому что вызов был вне диапазона от основного потока пользовательского интерфейса.

2 голосов
/ 04 февраля 2010

Или используйте интеграционный подход, чтобы получить лучшее из обоих миров: JAX-RS + MVC.

JBoss RESTEasy реализация JAX-RS интегрируется с Spring MVC. Смотри http://www.jboss.org/resteasy

Вот небольшое руководство по RESTEasy + Spring MVC: http://java.dzone.com/articles/resteasy-spring

2 голосов
/ 30 января 2010

JAX-RS - это инфраструктура Java EE RESTful. JavaServer Faces (JSF) - это инфраструктура Java EE MVC. Он поддерживает все, что вы упомянули в своем вопросе: отправьте сообщение об ошибке в той же форме, i8n / l10n и много больше. Чтобы узнать больше о JSF, прочитайте главы EII учебного пособия по Java EE 6, части 4-9 .

Вы можете сделать немного MVC с JAX-RS, но это не полноценная среда MVC. Продолжается та же история, что вы можете сделать RESTful с JSF, но это не полноценная среда RESTful.

Если вы хотите лучшего из обоих миров, я думаю, вам действительно нужно перейти на Ruby on Rails или Groovy on Rails .

1 голос
/ 12 мая 2012

Взгляните на ReXSL - это инфраструктура MVC поверх JAX-RS. Таким образом, ответ - да, JAX-RS идеально подходит для проектирования MVC.

1 голос
/ 30 января 2010

В этом вопросе много вопросов, и я изложу два из них.

«Интересно, действительно ли JAX-RS - хороший выбор для создания веб-приложения для людей?»

Веб-сервисы обычно предназначены для взаимодействия машин, хотя я бы сказал, что программировать взаимодействия обычно приходится на людей - это нужно сравнить с SOAP, где на данный момент гораздо больше возможностей для машинно-генерируемого кода. из WSDL.

«Если пользователь вводит неправильную или неполную информацию в форму»

  • затем в веб-службе HTTP RESTful, которая принимает представление html-формы, вы должны вернуть ошибку HTTP 400, потому что клиент предоставил представление, которое не соответствует представлению, ожидаемому вашей службой - клиент должен разобраться с ошибка.
0 голосов
/ 29 апреля 2015

Краткий ответ: ДА .

Он служит основой для реализации MVC (MVC 1.0 - JSR 371) для JAVA EE 8. Controller будет bean-компонентом JAX-RS с аннотацией @Controller (для класса или методов).

Для получения дополнительной информации см .: MVC 1.0 (JSR 371)

Если вы пошли по этому пути в то время, когда приняли действительно правильное решение, вам будет проще обновить и использовать новую архитектуру Java EE 8 MVC.

...