Grails 消除URL中的控制器和操作
我有几页。一个是“我们是谁”页面(登录页面),有3个“注册”页面,每个页面询问不同的问题,还有一个“联系”页面,包含位置、电话、电子邮件等信息。因此,当用户访问第二个注册页面时,url显示“/控制器/操作”。我想删除URL中的控制器部分,如果URL中的操作名为“reg3”,则它必须显示“registration3”,以此类推 我读过URLMappings.groovy文件可以实现它,但我不完全理解它是如何工作的。这是我的URLMappings.groovyGrails 消除URL中的控制器和操作,grails,Grails,我有几页。一个是“我们是谁”页面(登录页面),有3个“注册”页面,每个页面询问不同的问题,还有一个“联系”页面,包含位置、电话、电子邮件等信息。因此,当用户访问第二个注册页面时,url显示“/控制器/操作”。我想删除URL中的控制器部分,如果URL中的操作名为“reg3”,则它必须显示“registration3”,以此类推 我读过URLMappings.groovy文件可以实现它,但我不完全理解它是如何工作的。这是我的URLMappings.groovy static mappings = {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
"/registro"
{
controller = "Registro"
action = "registro_page"
}
"/registro2"
{
controller = "Registro"
action = "reg2"
}
"/registro3"
{
controller = "Registro"
action = "reg3"
}
"/contacto"
{
controller = "Registro"
action = "contacto"
}
"/quienes_somos"
{
controller = "Login"
action = "auth"
}
}
"/registro" (controller:'Registro', action:'registro_page')
"/registro2" (controller:'Registro', action:'reg2')
"/registro3" (controller:'Registro', action:'reg3')
"/contacto" (controller:'Registro', action:'contacto')
"/quienes_somos" (controller:'Registro', action:'home')
"/"(controller:'redirigir',action:"redirigir")
"500"(view:'/error')
"/login/$action"(controller: "login")
"/logout/$action"(controller: "logout")
}
正如我所说,我不确定我是否知道我在做什么
任何帮助都将不胜感激。谢谢。您有许多逻辑错误,最明显的是
"/registro"
{
controller = "Registro"
action = "registro_page"
}
属于默认映射的块内的块。“/$controller/$action?/$id?”映射。你应该从完全移除它们开始,只留下
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/registro" (controller:'Registro', action:'registro_page')
"/registro2" (controller:'Registro', action:'reg2')
"/registro3" (controller:'Registro', action:'reg3')
"/contacto" (controller:'Registro', action:'contacto')
"/quienes_somos" (controller:'Registro', action:'home')
"/"(controller:'redirigir',action:"redirigir")
"500"(view:'/error')
"/login/$action"(controller: "login")
"/logout/$action"(controller: "logout")
}
现在应该可以了,至少可以让你开始了。根据,你正在做的事情应该不会太远
在我看来,上面的部分是错误的,单线映射
"/registro" (controller:'Registro', action:'registro_page')
应该足够了
然后,您必须处理框架视图,它们不知道您的自定义URL映射,仍然创建“旧”链接。您必须手动调整所有自动生成的链接。如果我理解得很好,现在在我的渲染(视图:'xxx')中,我可以放置渲染(视图:'registro'),它应该调用'registro/registro_page'?@Fustigador否,URL映射不会影响
渲染
,您仍然必须在那里使用真实的控制器和视图名称。URL映射的要点是,如果执行
,它将生成指向/app/registro3
的链接。Grails可能会混淆的一点是,它希望URL映射中的控制器名称以小写字母开头—类RegistroController
对应于URL映射中的controller:“registro”
,我建议您更改映射以遵循此约定。