是否可以覆蓋方法的行爲CreateLink和CreateLinkTo?是否可以覆蓋方法** CreateLink **和** CreateLinkTo **的行爲?
回答
您可以使用元編程替換ApplicationTaglib上的閉包。
ApplicationTagLib.metaClass.getCreateLink = {->
return {attrs->
// your code here
}
}
我從來沒有嘗試過,但它可能工作:)
所有你需要做的就是創建一個屬於自己的標籤庫和自己定義的,即
class MyTabLib {
def createLink = {attrs, body ->
.... etc ....
}
def createLinkTo = {attrs, body ->
.... etc ....
}
}
Grails將標籤首先使用你的taglib。
希望這有助於!
謝謝你的回答。你能指定如何在這個標籤lig內調用原始的createLink。我只需要修改生成的鏈接只添加一個前綴。 (+1) – Luixv 2009-10-29 06:05:26
你應該可以做類似 def createLink = {attrs,body - > def apptag = new ApplicationTagLib() out << prefix; out << apptag.createLink(attrs,body); } – 2009-10-29 22:41:45
這有點晚了,但上面的解決方案並不適合我。我能夠成功地做到這一點,但:
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);
}
}
你基本上擴展了原來的標籤庫。由於「資源」標籤是對象的屬性(而不是方法),我不認爲你可以實際覆蓋它。相反,只需保存原始值並在對標記請求進行更改後再調用它。
哦..我重寫了'resource'標籤,但是這對'createLink'或'createLinkTo'(已棄用的'resource'標籤) – 2010-03-03 22:03:47
- 1. 如何覆蓋ApplicationTagLib的標準行爲#createLink和g:link?
- 2. 是否可以覆蓋NSUserDefault?
- 3. 是否可以使用LD_PRELOAD覆蓋主要方法?
- 4. 是否可以使用Dexmaker從現有類中覆蓋方法?
- 5. 是否可以擦除或覆蓋zsh的prexec()錯誤行爲?
- 6. 是否可以覆蓋原生Es6承諾解決方法?
- 7. 是否可以使用Attribute來覆蓋方法?
- 8. 是否有可能將最終覆蓋的方法標記爲
- 9. 是否可以覆蓋一個靜態方法
- 10. 是否有可能檢測父方法是否被覆蓋?
- 11. 可以覆蓋是否被棄用?
- 12. 是否可以刪除或覆蓋cmdlet?
- 13. 是否可以在全局覆蓋print()?
- 14. 是否可以覆蓋/繞過nscd?
- 15. 是否可以覆蓋例外?
- 16. 可以覆蓋類別方法嗎? IOS
- 17. 是否可以通過XBAP覆蓋HTML?
- 18. 可以覆蓋jsp_service()方法嗎?
- 19. 覆蓋方法上的Java Class.getMethods()行爲
- 20. 方法覆蓋和可選參數
- 21. 我可以讓WPF爲IsMouseOver覆蓋和覆蓋元素嗎?
- 22. 是否可以在Local.config文件中覆蓋appSettings和connectionStrings?
- 23. 是否可以繼承不變的日期類並覆蓋__str__方法?
- 24. 我可以覆蓋doPost方法的servlet的方法,多次
- 25. 新的HTML5表單類型的行爲是否可以被覆蓋?
- 26. 覆蓋方法
- 27. 聲明爲「覆蓋」的方法是否保持「虛擬」?
- 28. 是否必須覆蓋最終類的equals()和hashCode()方法
- 29. 方法覆蓋和變量
- 30. 覆蓋方法
你想重寫什麼行爲? – 2009-10-28 18:05:12
我想爲生成的鏈接添加一個前綴。我可以解決我的一部分問題,編寫一個方法HTMLCodec,它將返回帶有前綴的href。不幸的是,使用屬性SRC的標籤並非如此。據我所見,這個SRC是使用CreateLink或CreateLinkTo生成的。有可能有這種行爲? – Luixv 2009-10-28 18:29:02