我在Grails中使用Url的映射存在问题。
我有一个用户的应用程序,我用这个网址显示他们的个人资料:
/user/myProfile/2 (2 is the user's id)
但我想要显示用户个人资料的网址是:
/user/angelo087 (angelo087 is the username of the a user with id=2)
我为用户使用插件“spring-security-core2.0-RC2”。
我试过但我不知道这是怎么回事。问题是我不知道如何在UrlMappings.groovy中获取用户的ID来制作网址。
有任何帮助吗? =(
[编辑:解决方案]
最后,我知道如何将用户名放在网址中:
在UrlMapping.groovy
我写道:
"/user/$username" {
controller="user"
action = "myProfile"
}
之后,在UserController.groovy
我写道:
def myProfile() {
def username = params.username
def usuario = User.findByUsername(username.toString())
[personaInstance: usuario.persona, usuarioInstance: usuario]
}
问题是我不知道在URL中你可以放置数组params
的其他变量。
答案 0 :(得分:0)
您可以尝试使用urlMapping:
"/user/$id"(controller:"user", action:"myProfile")
然后在你的控制器中:
def user
if (id.isNumber()) {
user = User.get(id)
} else {
user = User.findByUsername(id)
}
这是一个猜测,因为您还没有包含您的urlMapping或控制器代码。
此外,采用此路由意味着可以命中和错过调用该控制器中的其他方法,因为id
和方法名称无法区分。您可以通过在上面的条目上方的urlMappings.groovy中定义其他方法来解决这个问题。通常更容易在URL路径中包含操作名称。