использование теговых библиотек JSP в Grails 2.4.0

В моем приложении Grails 2.3.8 я использую подключаемый модуль Janrain, который включает taglib JSP. В верхней части моего макета GSP я объявляю

<%@ taglib prefix="janrain" uri="http://janrain4j.googlecode.com/tags" %>

Затем я мог бы использовать этот taglib в том же GSP с:

<janrain:signInLink styleClass="btn">Login Socially</janrain:signInLink>

Но после обновления до Grails 2.4.0 я получаю эту ошибку

Unknown JSP tag janrain:signInLink. Stacktrace follows:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error applying layout : responsive
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

person Dónal    schedule 22.05.2014    source источник


Ответы (1)


Эта информация отсутствовала в примечаниях по обновлению Grails 2.4. Теперь я добавил, что: https://github.com/grails/grails-doc/commit/871eec21 , документы на сервере сборки.

Файлы JSP taglib tld больше не сканируются по умолчанию. Это необходимо настроить с помощью параметра grails.gsp.tldScanPattern. Он принимает строковое значение, разделенное запятыми. Spring PathMatchingResourcePatternResolver используется для разрешения шаблонов.

Вы можете получить предыдущее поведение, добавив этот параметр в Config.groovy:

grails.gsp.tldScanPattern='classpath*:/META-INF/*.tld,/WEB-INF/tld/*.tld'

Стандартная библиотека JSTL больше не добавляется в качестве зависимости. Если вы используете JSTL, вы также должны добавить эти зависимости:

   runtime 'javax.servlet:jstl:1.1.2'
   runtime 'taglibs:standard:1.1.2'
person Lari Hotari    schedule 22.05.2014
comment
Файл c.tld, включенный по умолчанию в приложение Grails, имеет описание, что он принадлежит основной библиотеке JSTL 1.2. Разве не следует включать библиотеки JSTL 1.2 вместо 1.1.2? - person Aakash; 23.09.2014
comment
Я получаю сообщение об ошибке после того, как добавил первую строку в Config и две зависимости времени выполнения в BuildConfig Error | Устранение ошибки при получении зависимостей: не удалось разрешить следующие артефакты: javax.servlet:jstl:zip:1.1.2, taglibs:standard:zip:1.1.2: не удалось найти артефакт - person Viriato; 17.10.2014
comment
@Viriato, если это произойдет, вы добавили зависимости в раздел «плагины {» BuildConfig. Их следует добавить в «зависимости {». - person Lari Hotari; 22.10.2014