0

プラグインTextController内に、というアクションで呼び出されるコントローラーがありますindex

次に、次のincludeタグで呼び出された呼び出し元アプリケーション内のビューがあります。test-plugin.gsp

<g:include controller="text" />

これはうまくいきます。問題は、プラグインのコントローラーが実際には次のようなパッケージのような名前で識別されるcom.foxbomb.fxportal3.components.text必要があることです。そのように参照する必要があります。したがって、次のようなプラグインのURLマッピングを試してみることを考えています。

    "/components/com.foxbomb.fxportal3.components.text/" {
        controller = "text"
        action = "index"
    }        

また、呼び出し元のアプリケーションにインクルードを作成して、そのURLを呼び出そうとする方法もわかりません(URL属性を取得していないことはわかっています)。

<g:include url="/components/com.foxbomb.fxportal3.components.text"/>

つまり、コントローラー/アクション名ではなく、マッピングによってコントローラー/アクションを含めたいと思います。

4

1 に答える 1

2

<g:include>属性を許可していませんurl。これは私を驚かせますが、タグのソースを<g:include>見ると、これを独自のtaglibにかなり簡単に実装できるはずです(テストされていません)。

import org.codehaus.groovy.grails.web.util.WebUtils

class IncludeTagLib {
  def grailsUrlMappingsHolder

  def includeUri = { attrs, body ->
    def mapping = grailsUrlMappingsHolder.match(attrs.uri)
    out << WebUtils.includeForUrlMappingInfo(request, response, mapping,
               attrs.model ?: [:])?.content
  }
}    

あなたは<g:includeUri uri="/components/com.foxbomb.fxportal3.components.text"/>あなたのGSPで言うでしょう。

于 2012-10-16T10:22:43.333 に答える