将 Grails 应用程序中的默认主页修改为不再是 appName/index.gsp 的配置设置是什么?当然,您可以将该页面设置为重定向,但必须有更好的方法。
7 回答
在 UrlMappings.groovy 中添加这个
"/" { 控制器 = "你的控制器" 行动 = “你的行动” }
通过这种方式配置 URLMappings,应用程序的主页将是 yourWebApp/yourController/yourAction。
(从IntelliGrape 博客剪切/粘贴)
You may try as follows
in the UrlMappings.groovy class which is inside the configuration folder:
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')
}
}
hope this helps,
Rubel
编辑 UrlMappings.groovy
添加例如添加此规则,以使用 HomeController 处理根。
“/”(控制器:'家')
通过以下语法使用控制器、视图和操作参数:
class UrlMappings {
static mappings = {
"/" (controller:'dashboard', view: 'index', action: 'index')
"500"(view:'/error')
}
}
简单整洁
转到文件:grails-app/conf/UrlMappings.groovy。
将行:“/”(view:“/index”)替换为“/”(controller:'home',action:“/index”)。
Home 是你要运行的控制器(就像在 spring security 中你可以使用 'login' ),action 是与你的控制器关联的 grails 视图页面(在 Spring Security '/auth' 中)。
根据您的应用程序需要添加页面重定向。
所有答案都是正确的!但是让我们想象一个场景:
我将路径“/”映射到控制器:“Home”和操作:“index”,所以当我访问“/app-name/”时,控制器 Home 会被执行,但是如果我输入路径“/app-name/home” /index”,它仍然会被执行!所以一个资源有两条路径。它会一直工作,直到有人找到“home/index”路径。
另一件事是,如果我有一个没有指定任何动作属性的表单,那么默认情况下它将发布到同一个控制器和动作!所以如果表单映射到“/”路径并且没有指定动作属性,那么它将被提交到同一个控制器,但是这次路径将是地址栏中的“home/index”,而不是“/”,因为它被提交给控制器/动作而不是 URI。
要解决这个问题,您必须做的是删除或注释掉这些行。
// "/$controller/$action?/$id?(.$format)?"{
// constraints {
// // apply constraints here
// }
// }
所以现在当你访问“/”时,就可以了。但“家/索引”不会。但是有一个缺陷,现在您必须通过显式写入 URLMapping 文件来手动将所有路径映射到控制器。我想这会有所帮助!
如果有人正在寻找 gails 3.x 的答案,他们将 UrlMappings.groovy 移至 grails-app/controllers/appname
正如下面的答案所说,只需编辑以“/”开头的行。
在我的情况下:
"/"(controller:"dashboard", view:"/index")