在Grails 2.4.0中使用JSP taglibs

时间:2014-05-22 00:49:01

标签: grails jsp-tags

在我的Grails 2.3.8应用程序中,我正在使用包含JSP taglib的Janrain插件。在我的布局顶部GSP我宣布

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

然后我可以在同一个GSP中使用这个taglib:

<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)

1 个答案:

答案 0 :(得分:3)

Grails 2.4 upgrade notes中缺少此信息。我现在已添加:https://github.com/grails/grails-doc/commit/871eec21docs on build server

默认情况下不再扫描JSP taglib tld文件。必须使用grails.gsp.tldScanPattern设置进行配置。它接受逗号分隔的String值。 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'