是否可以覆盖 CreateLink 和 CreateLinkTo 方法的行为?
答案 0 :(得分:2)
您可以使用元编程替换ApplicationTaglib上的闭包。
ApplicationTagLib.metaClass.getCreateLink = {->
return {attrs->
// your code here
}
}
我从来没有尝试过,但它可能有效:)
答案 1 :(得分:1)
您需要做的就是创建自己的taglib并自己定义标记,即
class MyTabLib {
def createLink = {attrs, body ->
.... etc ....
}
def createLinkTo = {attrs, body ->
.... etc ....
}
}
Grails将首先使用您的taglib。
希望这有帮助!
答案 2 :(得分:1)
这有点晚了,但上面的解决方案对我不起作用。不过我能够成功地做到这一点:
public class MyTagLib extends ApplicationTagLib {
def oldResource
public MyTagLib() {
// save the old 'resource' value
oldResource = resource;
resource = staticResource;
}
def staticResource = { attrs ->
// dork with whatever you want here ...
// ...
out << oldResource(attrs);
}
}
你基本上扩展了原始标签lib。由于'resource'标签是对象的属性(而不是方法),我认为你实际上不能覆盖它。相反,只需保存原始值,并在对标记请求进行更改后调用它。