### LinkGenerator ###
一般來說,產生 Grails 的連結有幾種方式:
- <g:link ... />
- <g:resource ... />
- ${createLink(...)}
- ${resource(...)}
但有些特殊網址不容易透過這種標準方式產生,但很該死的在舊版 Grails 並沒有方便的標準方法,可以拿到「Base URL」,例如「http://compnay.com/app」這種!
雖然透過 request 物件,也可以自己將 URL 組合出來;但是不免還是要懷疑,一個 Web Framework 怎麼連這麼基本的東西都沒有?!
Grails 2.x 之後可以利用 LinkGenerator 幫忙,在 Controller / Service 程式中,可以定義一個 grailsLinkGenerator 變數來取得此物件實例(透過 Injection 方式)。
class XxxController {
def grailsLinkGenerator // Injection
}
如此就能在程式中存取其方法:
grailsLinkGenerator.contentPath
grailsLinkGenerator.serverBaseURL
grailsLinkGenerator.link ...
grailsLinkGenerator.resource ...
特別是在設計 TagLib 時,LinkGenerator 就有很多用處了。
### MimeUtility ###
這是用來取得 Mime Types 的物件,雖然 Grails 內建能辨別的 Mime Types 並不多,但至少可以依循這個標準的介面來擴充。
使用方式同樣是透過 Injection,
class XxxController {
def grailsMimeUtility // Injection
}
以下是幾種使用範例。
log.info grailsMimeUtility.knownMimeTypes
log.info grailsMimeUtility.getMimeTypeForExtension('html')
log.info grailsMimeUtility.getMimeTypeForURI('http://example.com/test.html')
沒有留言:
張貼留言