質問

次のようなコードを使用して正常に機能する独自のtaglibのタグを使用して、動的なGSPコンテンツを処理しています。

    def GroovyPagesTemplateEngine groovyPagesTemplateEngine
    ...
    def processGSPContent(model, name, out) {
        log.debug("model is $model")
        Template t = groovyPagesTemplateEngine.createTemplate(model.content, name + ".gsp")
        Writable w = t.make(model: model)
        w.writeTo(out)
    }

今ではtaglibなどのさまざまなリソースがどのように見つかるかについては100%確信が持てませんが、すべてのtaglibは通常のgrails libと同様に正常に機能します。

私が抱えている問題は、 AcegiSecurity のタグがこの方法で処理されたコンテンツに見つからないことです。例:

<g:isLoggedIn>
   You're logged in :-)
</g:isLoggedIn>

では、 AcegiSecurity タグを見つけるために GroovyPagesTemplateEngine を取得するにはどうすればよいですか? ApplicationContext または ServletContext と関係があるのではないかと思います。

編集--- オーバーロードされた名前空間の問題のようです:

    Caused by: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Tag [ifnotloggedin] does not exist. 
No tag library found for namespace: g at home_pmcneil_devel_Groupie_grails_app_views_display_page_gsp.run(home_pmcneil_devel_Groupie_grails_app_views_display_page_gsp:32) 
役に立ちましたか?

解決

taglibが存在する問題は、htmlをクリーンアップするために使用するライブラリが、htmlが大文字と小文字を区別しないため、タグを小文字に非常に正しく変換することでした。これに関する問題は、grailsタグでは大文字と小文字が区別されるため、タグ「isLoggedIn」がが見つかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top