Использование представлений GSP в простом Spring MVC без Grails - PullRequest
9 голосов
/ 27 ноября 2010

Я бы хотел использовать представления GSP вместо представлений JSP / JSTL в простом старом приложении Spring MVC.Я добавил groovy.servlet.TemplateServlet в web.xml следующим образом:

<servlet>
    <servlet-name>GroovyTemplate</servlet-name>
    <servlet-class>groovy.servlet.TemplateServlet</servlet-class>
    <init-param>
            <param-name>template.engine</param-name>
            <param-value>groovy.text.GStringTemplateEngine</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyTemplate</servlet-name>
    <url-pattern>*.gsp</url-pattern>
</servlet-mapping>

И настроил Spring InternalResourceViewResolver для загрузки файлов GPS.До этого момента все работало нормально, но для представления значений в модели шаблону мне пришлось проделать некоторые уловки (создать подкласс TemplateServlet и добавить их в ServletBinding).

Теперь мое следующее препятствие заключается в том, что JSTLпо умолчанию экранирует XML при использовании тега c: out, а Grails имеет понятие кодеков для автоматического экранирования значений, используемых в GSP.Описанный выше шаблонный метод не скрывается по умолчанию, поэтому разработчики должны быть очень осторожны, чтобы избежать уязвимостей XSS.

Есть ли другой (лучший) способ использования GSP, включая автоматическое экранирование в простом приложении Spring MVC безиспользуя Grails?

Ответы [ 3 ]

1 голос
/ 25 апреля 2014

Сегодня была выпущена GSP для Spring Boot.Это дает возможность использовать GSP вместо JSP в обычном веб-приложении Spring.Вы можете увидеть пример здесь: https://github.com/grails/grails-boot/blob/master/sample-apps/gsp/script/templates/index.gsp

0 голосов
/ 10 июня 2016

Мы извлекли GSP из Grails, настроили его для приложений Spring MVC и улучшили поддержку конфигурации. Пожалуйста, смотрите наш инструмент Rabbtor . Мы не предоставляем его с открытым исходным кодом, но его использование бесплатное, и мы использовали его в наших собственных приложениях. GSP для Spring Boot зависит от загрузки Spring, он не поддерживается, а некоторые библиотеки тегов зависят от Grails. Мы удалили эти зависимости, создали наши собственные пользовательские библиотеки тегов, которые лучше подходят для приложений Spring MVC. Поддерживаются большинство библиотек тегов и имеют реализации, аналогичные тегам Spring JSP. Предоставляется библиотека тегов формы с привязкой к данным, а также вы можете зарегистрировать библиотеки тегов или пакеты.

0 голосов
/ 27 ноября 2010

Вместо использования TemplateServlet вы могли бы также использовать GroovyPagesServlet для этой цели (я этого не проверял, просто посмотрел на Grails ' web.xml и код класса' ).
Последний требует установки bean-компонента Spring с именем groovyPagesTemplateEngine и типом GroovyPagesTemplateEngine (в данном случае GStringTemplateEngine).

Настройка слоя вида с InternalResourceViewResolver верна. Вам назначат GroovyPageView.

GSP по умолчанию не сконфигурированы для выполнения экранирования вывода HTML. Чтобы настроить это, измените grails.views.default.codec с none на html в Config.groovy . См. эту статью для получения дополнительной информации.

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