我在插件中有一个名为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"/>
换句话说,我希望通过 映射 包含控制器/操作,而不是其控制器/操作 名称
答案 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"/>
。