我对Grails社区比较陌生,但我已经非常喜欢引擎所提供的功能了.目前,我正在实现一个自定义标记库,以便在我们的页面上轻松实现标准设计.但是,我需要一种为实用程序调用辅助函数的方法(例如过滤数据)以及存储关于我的标记的请求级元数据(例如计数器,父/子关系).
我试过两个解决方案:
第一:我创建了一个服务,将其范围设置为"请求"
package myapp
class CustomTagService {
static scope = 'request'
def data = []
def add(localData) {
data.add(localData)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将其注入我的标签库时
package myapp
class MyTagLib {
def customTagService
def myTag = { attrs, body ->
customTagService.add(attrs)
}
}
Run Code Online (Sandbox Code Playgroud)
引擎向我大吼大叫引用请求范围(经过长时间的痛苦堆栈跟踪):" 范围'请求'对于当前线程不活动;如果您打算从单例引用它,请考虑为此bean定义范围代理 "
第二:我理解pageScope在标签关闭内部可用,我之前已经开发过了.然而,对于我想要的结构,封装将是更优选的.
如果我走错了路,请告诉我.我们欢迎所有的建议!