Grails:如何将URL映射到自定义插件中的控制器?

时间:2012-10-16 09:56:20

标签: grails plugins tags include

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

然后我在名为test-plugin.gsp调用应用程序中有一个视图,其中包含以下include标记:

<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"/>

换句话说,我希望通过 映射 包含控制器/操作,而不是其控制器/操作 名称

1 个答案:

答案 0 :(得分:2)

<g:include>不允许url属性,这让我感到惊讶,但是看the source of the <g:include> tag,应该可以在您自己的taglib中轻松实现(未经测试):< / p>

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
  }
}    

您在GSP中说<g:includeUri uri="/components/com.foxbomb.fxportal3.components.text"/>