【问题标题】:How do you change the default homepage in a Grails application?如何更改 Grails 应用程序中的默认主页?
【发布时间】:2010-09-06 20:53:42
【问题描述】:

将 Grails 应用程序中的默认主页修改为不再是 appName/index.gsp 的配置设置是什么?当然你可以将该页面设置为重定向,但必须有更好的方法。

【问题讨论】:

    标签: grails


    【解决方案1】:

    在 UrlMappings.groovy 中添加这个

    "/" { 控制器 = "你的控制器" 动作 = “你的动作” }

    通过这种方式配置 URLMappings,应用的主页将是 yourWebApp/yourController/yourAction。

    (从IntelliGrape Blog剪切/粘贴)

    【讨论】:

    • 可能该方法在 Grails 的后续版本中发生了变化,因为它不适用于 1.3.7。使用 daherman 发布的语法对我有用。
    • 它应该可以工作,根据official docs,但请记住使用您的控制器的简称 - 即如果您的控制器类是 BooksController,那么您只将其称为“书籍”。
    【解决方案2】:

    编辑 UrlMappings.groovy

    添加例如添加此规则,以使用 HomeController 处理根。

    "/"(控制器:'home')

    【讨论】:

      【解决方案3】:

      你可以尝试如下
      在配置文件夹内的 UrlMappings.groovy 类中:

      class UrlMappings {
      
          static mappings = {
      
              "/$controller/$action?/$id?"{
                  constraints {
                      // apply constraints here
                  }
              }
      
              //"/"(view:"/index")
              "/" ( controller:'Item', action:'index' ) // Here i have changed the desired   action to show the desired page while running the application
              "500"(view:'/error')
          }
      }
      

      希望这会有所帮助,
      鲁贝尔

      【讨论】:

        【解决方案4】:

        通过以下语法使用控制器、视图和动作参数:

        class UrlMappings {
           static mappings = {
               "/" (controller:'dashboard', view: 'index', action: 'index')
               "500"(view:'/error')
           }
        }
        

        【讨论】:

          【解决方案5】:

          简单整洁

          1. 转到文件:grails-app/conf/UrlMappings.groovy。

          2. 将行:"/"(view:"/index") 替换为 “/”(控制器:'home',动作:“/index”)。

          Home 是你要运行的控制器(就像在 spring security 中你可以使用 'login' ),action 是与你的控制器关联的 grails 视图页面(在 Spring Security '/auth' 中)。

          根据您的应用程序需要添加页面重定向。

          【讨论】:

            【解决方案6】:

            所有答案都是正确的! 但是让我们想象一个场景:

            我将路径“/”映射到控制器:“Home”和操作:“index”,所以当我访问“/app-name/”时,控制器 Home 会被执行,但如果我输入路径“/app- name/home/index”,它仍然会被执行!所以一个资源有两条路径。在有人找到“home/index”路径之前它会起作用。

            另一件事是,如果我有一个没有指定任何动作属性的表单,那么默认情况下它会 POST 到同一个控制器和动作!所以如果表单映射到“/”路径并且没有指定动作属性,那么它将被提交到同一个控制器,但是这次路径将是地址栏中的“home/index”,而不是“/”,因为它被提交给控制器/动作而不是 URI。

            要解决这个问题,你必须做的是删除或注释掉这些行。

            //        "/$controller/$action?/$id?(.$format)?"{
            //            constraints {
            //                // apply constraints here
            //            }
            //        }
            

            所以现在当您访问“/”时,就可以了。但“家/索引”不会。但是有一个缺陷,现在您必须通过显式写入 URLMapping 文件来手动将所有路径映射到控制器。我想这会有所帮助!

            【讨论】:

              【解决方案7】:

              如果有人正在寻找 gails 3.x 的答案,他们会将 UrlMappings.groovy 移至 grails-app/controllers/appname

              正如下面的答案所说,只需编辑以“/”开头的行。

              就我而言:

              "/"(controller:"dashboard", view:"/index")
              

              【讨论】:

                猜你喜欢
                • 2016-09-04
                • 2012-03-20
                • 2015-04-09
                • 1970-01-01
                • 2016-01-10
                • 1970-01-01
                • 1970-01-01
                • 2014-08-15
                • 1970-01-01
                相关资源
                最近更新 更多