Grails命名空间问题

时间:2014-02-14 22:45:28

标签: grails

我遇到grails重定向到命名空间的问题:

我在LoginController中有这个重定向:

redirect(namespace:'auth',controller:'login',action: "login")

并在我的URL映射中定义:

"/auth/$action?/$id?" {
 controller = 'login'
 namespace = 'auth'
 }

然而,重定向不起作用,它重定向:login / login而不是auth / login。

此外,登录表单是使用login / authenticate操作生成的,而不是auth / authenticate。

有什么想法吗?

这是Grails 2.3.4 btw。

感谢。

2 个答案:

答案 0 :(得分:0)

对我有用的解决方案是使用named URL Mapping

1)在UrlMappings.groovy中提供映射名称:

name specialLoginMapping: "/auth/$action?/$id?" {
 controller = 'login'
 namespace = 'auth'
}

2)在重定向呼叫中引用此映射

redirect(mapping: 'specialLoginMapping', action: 'login')

Grails应该从上面的UrlMappings条目中获取控制器/命名空间

答案 1 :(得分:0)

在UrlMappings.groovy中尝试使用这些代码:

"/auth/$controller/$action?/$id?" {
   namespace = 'auth'
}

要在表单操作中获取控制器的正确路径,请在url中使用namespace:

<g:form url="[action:'save', namespace:'auth']">
.......
</g:form>