我有一些页面。一个是“我们是谁是页面”(登陆页面),有3个“注册”页面,每个页面都要求不同的东西,还有一个“联系”页面,其中包含有关位置,电话,电子邮件等的信息因此,当用户访问第二个注册页面时,网址会显示“/ controller / action”。我想删除URL中的控制器部分,如果该操作在URL中命名为“reg3”,则必须显示“registration3”,依此类推。
我已经读过它可以用URLMappings.groovy文件实现,但我不完全理解它是如何工作的。这是我的URLMappings.groovy
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")
}
正如我所说,我不确定我是否知道自己在做什么......
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
您有许多逻辑错误,最明显的是
"/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")
}
现在应该可以了,至少可以让你开始。
答案 1 :(得分:1)
根据documentation,你所做的不应该太远。
上部似乎对我不对,单行映射
"/registro" (controller:'Registro', action:'registro_page')
应该足够了。
然后你必须处理脚手架视图,他们不知道你的自定义URL映射,仍然创建“旧”链接。您必须手动调整所有自动生成的链接。