0

我在一个名为的插件TextController中有一个控制器,该控制器名为index

然后我在调用应用程序中有一个视图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>应该可以很容易地在您自己的标签库中实现它(未经测试):

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"/>在你的普惠制中说。

于 2012-10-16T10:22:43.333 回答