Grails断字URL转换器问题与默认索引方法

Grails断字URL转换器问题与默认索引方法,grails,Grails,根据Grails,默认URL映射(控制器操作和URL之间)使用驼峰大小写。您可以轻松更改URL映射以使用连字符URL: grails.web.url.converter = 'hyphenated' 例如,HelloWorldController.showUsers将映射到: /hello-world/show-users 在Grails中,您可以有一个默认的控制器操作,按照惯例是“索引”。例如,如果您有一个名为index()的方法,则以下URL将命中该方法: /hello-world 您

根据Grails,默认URL映射(控制器操作和URL之间)使用驼峰大小写。您可以轻松更改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>
。。。而不是:

/hello
我重构并将其重命名为其他单字控制器,问题依然存在。我使用的是Grails2.2.2,所以我升级到Grails2.3.4,很惊讶这个bug仍然存在。将控制器重命名为任意两个单词前缀,如HomePageController、HelloWorldController、OneWoController等,目前是一种解决方法


这是我第一次真正使用普惠制。我做错什么了吗?

URL是用户体验的一部分,应该是干净的,所以
索引问题真的很烦人

这很不方便,但是您可以通过映射每个页面并省略操作来消除单个单词控制器的URL的
索引部分

grails-app/config/UrlMappings.groovy

class UrlMappings {

   static mappings = {
      "/hello"     (controller: "hello")
      "/settings"  (controller: "settings")
      "/dashboard" (controller: "dashboard")
      ...

您应该在jira.grails.org上提交一个bug有趣的是,当我搜索grails jira时,第一个命中的是一个安全bug,它是在启用“hyphenated”并且控制器前缀包含“两个”字时触发的:在这里打开一个bug报告:如果有人感兴趣,我在这里看到了一个与安全相关的JIRA项目,用于连字符配置选项:-在解决此问题之前,最好不要使用连字符URL转换器,而是使用UrlMappings。刚刚在Grails 3.0上进行了测试,上面的解决方法仍然有效。
/hello
class UrlMappings {

   static mappings = {
      "/hello"     (controller: "hello")
      "/settings"  (controller: "settings")
      "/dashboard" (controller: "dashboard")
      ...