例えば、私は.gspファイル内GSPの外でgrailsタグを使うことはできますか?
<g:createLink controller="user" action="show" />
を置くことができ、それがうまく動作します。
しかし、また、私は、たとえば、あなたがGrailsのコントローラからのtaglibメソッドを使用することができます
例えば、私は.gspファイル内GSPの外でgrailsタグを使うことはできますか?
<g:createLink controller="user" action="show" />
を置くことができ、それがうまく動作します。
しかし、また、私は、たとえば、あなたがGrailsのコントローラからのtaglibメソッドを使用することができます
Grailsのビューの一部ではありません.groovyファイルの内部で同じ閉鎖createLink
を使用したい:
def userShow = g.createLink(controller:"user", action:"show")
組み込みのタグライブラリ(またはg名前空間のタグライブラリ)では、メソッド呼び出しの名前空間接頭辞を省略できます。
サービス/フィルタにgrailsApplicationを注入します。
def grailsApplication
そして、Spring beanを取得します。あなたがg
のtaglibを参照することができる管理されていないクラスの場合
def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
def userShow = g.createLink(controller: 'user', action: 'show')
私はすべてのサービスでリンクを作成する方法を参照してください...これを投稿していただきありがとうございます! – loeschg
:
def g = ApplicationHolder.application.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
(など、非同期ジョブ、サービスのために)コントローラの外側のGrails 2.0のようにこれを行うには、ネイティブな方法はにありますLinkGeneratorクラスを使用します。どこでも動作し、公式ドキュメントに記載されています。そのようなプロパティ:G` Grailsのコントローラでちょうど上記のコードを使用して、それよりもそれによりが存在する必要があり、ここで
http://mrhaki.blogspot.ca/2012/01/grails-goodness-generate-links-outside.html
を例を参照してください 'エラー= groovy.lang.MissingPropertyExceptionを与えます。 – aroth
間違いなくそれ以上です! "No such property:g"エラーの解決方法に関するMatt Christiansonの回答を参照してください。 – Twelve24
私はあなたが最初にコントローラにgrailsApplicationを 'def grailsApplication'で注入する必要があると思います。サービスでは、最初に 'g 'を' def g = gspTagLibraryLookup.lookupNamespaceDispatcher( "g") 'で定義する必要があります。 –