Альтернативы JSP для Spring MVC view layer - PullRequest
76 голосов
/ 30 апреля 2010

Я ищу создание нового приложения с нуля и, вероятно, буду использовать Spring MVC и, возможно, Spring Web Flow. Проекты, созданные Spring Roo, используют Spring MVC и, возможно, Web Flow. Какие есть хорошие альтернативы для технологии представлений или JSP с тегами Spring и JSTL и jQuery - путь?

Ответы [ 16 ]

51 голосов
/ 13 июня 2012

Я недавно обнаружил Thymeleaf .

Похоже, что это полная замена JSP и имеет интеграцию с Spring MVC. Шаблонный подход больше похож на HTML и может быть более приемлемым для ваших дизайнеров пользовательского интерфейса. У них есть небольшая статья, которая сравнивает два решения бок о бок.

49 голосов
/ 30 апреля 2010

В стандартном API Java EE единственной альтернативой JSP является Facelets . На данный момент (2010) JSF является единственной платформой MVC, которая изначально поддерживает Facelets.

Spring MVC поддерживает из коробки только JSP, но имеет настраиваемый распознаватель вида , который позволяет в любом случае использовать Facelets . Другими кандидатами являются сторонние шаблоны, такие как Velocity , Freemarker и Thymeleaf , которые можно настроить в качестве технологии просмотра для Spring MVC. Документация Spring содержит примеров интеграции с Velocity и Freemarker.

17 голосов
/ 23 января 2012

Недавно я начал использовать обычный HTML и jQuery для презентации в Spring MVC, создавая только представление JSON.

Пока что все идет хорошо, и хотя мне приходится выполнять работу с javascript, это значительно упрощает взаимодействие с моим дизайнером и ускоряет обработку, когда у него есть изменения, потому что мне не нужно конвертировать его HTML в мой JSP. , Жюри все еще отсутствует в отношении общей ремонтопригодности сайта.

15 голосов
/ 03 марта 2011

В Spring MVC вы можете иметь столько технологий просмотра, сколько пожелаете. У меня есть FreeMarker и JSP View Resolvers. Когда я сталкиваюсь с представлением, что это слишком сложно во Freemarker (или просто более удобно в JSP), я создаю представление JSP. Например, Spring JSLT отлично справляется с обработкой форм. Для этого я использую представления JSP, но для почти всего остального у меня есть представления freemarker.

Изучите документацию Spring MVC, чтобы узнать, как настроить несколько преобразователей представлений, в основном:

<bean name="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
   <property name="cache" value="true"/>
   <property name="prefix" value=""/>
   <property name="suffix" value=".ftl"/>
   <property name="order" value="1"/> <!--NOTICE THE ORDER-->
</bean>

<bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="order" value="2"/> <!--NOTICE THE ORDER-->
</bean>
15 голосов
/ 30 апреля 2010

Пружинная документация также предлагает Freemarker . Freemarker (насколько я могу судить) быстр и имеет некоторую интеграцию с функциями Spring, такими как привязка.

9 голосов
/ 30 апреля 2010

Spring MVC обеспечивает интеграцию со многими различными технологиями просмотра . Я бы порекомендовал использовать FreeMarker или Velocity .

8 голосов
/ 23 января 2012

Хотя это старый вопрос, я подумал, что предложу перспективную альтернативу, которая будет Scalate .

Scalate - мощный инструмент шаблонных опций. Единственной вероятностью является то, что Scalate требует много зависимостей (хотя для этого требуется Scala, для этого не требуется писать в Scala).

Мой любимый сейчас - Handlebars.java , который имеет интеграцию Spring.

5 голосов
/ 30 апреля 2010

(Мой предыдущий ответ был здесь устаревшим.) Freemarker по крайней мере так же хорош, как Velocity. Но Thymeleaf выглядит еще более убедительным, и вместе с layout-dialect может сделать ненужными каркасы шаблонов, такие как sitemesh и tile. Для JSF критика Thoughtworks кажется верной:

Мы по-прежнему видим, что команды сталкиваются с проблемами при использовании JSF - JavaServer Faces - и рекомендуем вам избегать этой технологии. Команды, кажется, выбирают JSF, потому что это стандарт Java EE, без реальной оценки того, подходит ли им модель программирования. Мы считаем, что JSF имеет недостатки, потому что его модель программирования поощряет использование собственных абстракций, а не полное использование базовой веб-модели. JSF, как и веб-формы ASP.NET, пытается создавать деревья компонентов с сохранением состояния в верхней разметке HTML и протокол HTTP без сохранения состояния. Улучшения в JSF 2.0 и 2.2, такие как введение представлений без состояния и продвижение GET, - это шаги в правильном направлении, возможно, даже признание того, что оригинальная модель была ошибочной, но мы считаем, что это слишком поздно. Вместо того, чтобы справляться со сложностью JSF, мы рекомендуем командам использовать простые платформы и тесно работать с веб-технологиями, включая HTTP, HTML и CSS.

3 голосов
/ 27 апреля 2015

Вы также можете использовать Angular (клиентская структура) для слоя View в Spring MVC.

3 голосов
/ 30 апреля 2010

Я использую скорость и Spring MVC. Кроме того, я размещаю свое приложение на движке приложений Googles, и у меня нет проблем.

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