如何使插件忽略所有不可用的标签?

时间:2012-01-05 13:33:08

标签: grails groovy grails-plugin

我提取了所有静态资源(CSS,JS,IMG),视图(GSP)和 i18n (消息* .properties)从我的主要Grails应用程序到一个单独的插件('myguiplugin'),以便为前端设计人员提供访问权限,同时保持核心逻辑的机密性。

现在使用它会非常困难,因为当它自己运行时,插件(显然)无法正常工作。

主要原因是对标签的所有调用都不可用。例子:

org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <sec:ifNotLoggedIn>
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:render>

有没有办法让grails忽略这样的错误,以便能够在浏览器中显示应用程序的静态部分?

1 个答案:

答案 0 :(得分:0)

您可以通过GroovyPage.invokeTag()尝试粗略覆盖metaClass方法(这是在Grails 1.3中抛出此异常的方法),但我不确定会发生什么:D

像:

def oldInvokeTag = GroovyPage.metaClass.invokeTag
GroovyPage.metaClass.invokeTag = { 
  String tagName, String tagNamespace, int lineNumber, Map attrs, Closure body ->

  try {
    // or do something more smart
    oldGormDelete.invoke(delegate, tagName, tagNamespace, lineNumber, attrs, body)
  }
  catch (e) {
    out.append("some unknown tag: $tagNamespace:$tagName")
  }
}