根据Grails文档,默认的URL映射(控制器操作和URL之间)使用camel大小写。您可以很容易地更改URL映射以使用连字符URL:
grails.web.url.converter = 'hyphenated'
例如,HelloWorldController.showUsers会映射到:
/hello-world/show-users
在Grails中,您可以有一个默认的控制器操作,按照惯例它是"索引"。例如,如果您有一个名为index()的方法,那么以下URL将命中该方法:
/hello-world
你可以创建一个锚标签,链接到该URL,如下所示:
<g:link controller="HelloWorld">Go!</g:link>
我注意到一个奇怪的错误,如果我的控制器名称前缀只有一个"单词",比如HelloController,那么:
<g:link controller="Hello">Go!</g:link>
将始终生成指向以下位置的URL:
/hello/index
而不是:
/hello
我对它进行了重构,并将其重命名为其他单字控制器,但问题仍然存在。我使用的是Grails 2.2.2,所以我升级到了Grails 2.3.4,很惊讶这个bug仍然存在。将控制器重命名为任何两个单词的前缀,如HomePageController、HelloWorldController、OneTwoController等,目前是一种解决方法。
这是我第一次真正使用GSP。我做错什么了吗?
URL是用户体验的一部分,应该是干净的,所以index
问题真的很烦人。
这很不方便,但您可以通过映射每个页面并省略操作来消除单个单词控制器URL中的index
部分。
grails app/config/UrlMappings.groovy
class UrlMappings {
static mappings = {
"/hello" (controller: "hello")
"/settings" (controller: "settings")
"/dashboard" (controller: "dashboard")
...