我们正在使用Grails 3.0.11构建一个允许自定义页面创建的Web应用程序。页面可以选择包含选项卡,并且用户应该能够使用URL结构/page/tab
直接链接到特定选项卡
到目前为止,/page
没问题,但URL中包含选项卡ID不会映射到分配的 Controller public
(也不包括操作),并且会引发404。
class UrlMappings {
static excludes = ["/images/*","/assets/*","/layouts/*","/js/*", "/css/*"]
static mappings = {
/$page?/$tabid{
controller= 'public'
action='findPage'
constraints{
page(matches:/[a-zA-Z]+/)
}
}
"/"(controller:'public',action:'findPage')
"/admin/**"(controller:'admin')
"500"(view:'/error')
"404"(view:'/notFound')
}
}
编译器不会抛出其他错误。尝试次数:
/$page/?$tabid
==> / page / tabid可以,/ page更改为'pag'截断并删除了最后一个字符/$page?/?$tabid
==>同上.../$page/$tabid
==>(预期)不会映射到URL /page
的 Controller ,并且正确地映射了URL /page/tab
最佳答案
弄清楚了-Grails规范在创建动态URL时在变量名的末尾包括问号运算符。 ... "/$page/$tabid?"{ ...
是正确的映射。
关于grails - 通过Grails具有可选页面深度/URL变量的URLMappings 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44739677/