Bra*_*ads 9 grails grails-plugin
我需要从我的域类中调用静态资源插件(http://www.grails.org/Static+Resources+Plugin).
这在控制器中完美运行:
def tstLink = resourceLinkTo(dir:"docs/${identifier}",file:originalFileName)
Run Code Online (Sandbox Code Playgroud)
但在我获得的域类中
Exception Message: No signature of method: static org.maflt.ibidem.Item.resourceLinkTo() is applicable for argument types: (java.util.LinkedHashMap) values: [[dir:docs/19e9ea9d-5fae-4a35-80a2-daedfbc7c2c2, file:2009-11-12_1552.png]]
Run Code Online (Sandbox Code Playgroud)
我认为这是一个普遍的问题.
那么如何将taglib称为域类中的函数?
Mat*_*man 11
我前一段时间遇到过这个问题我正在研究的应用程序.我最终做的是在服务方法中调用标记:
class MyService {
def grailsApplication //autowired by spring
def methodThatUsesATag(identifier, originalFileName) {
//This is the default grails tag library
def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
g.resourceLinkTo(dir:"docs/${identifier}",file:originalFileName)
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的域类中,我也可以通过spring autowiring获得服务:
class MyDomain {
String originalFileName
def myService //autowired
static transients = ['myService'] //Necessary so that GORM doesn't try to persist the service instance.
//You can create a method at this point that uses your
//service to return what you need from the domain instance.
def myMethod() {
myService.methodThatUsesATag(id, originalFileName)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6198 次 |
| 最近记录: |