Grails-来自gsp的控制器访问变量

Grails-来自gsp的控制器访问变量,grails,controller,gsp,params,Grails,Controller,Gsp,Params,我有以下grails控制器 class UserController { def userService def roleService def index() { def roles = roleService.listRoles() [roles: roles] } def userDetails() { [user: userService.getUser(params.id), role:pa

我有以下grails控制器

class UserController {

    def userService
    def roleService

    def index() { 
        def roles = roleService.listRoles()
        [roles: roles]
    }

    def userDetails() {
        [user: userService.getUser(params.id), role:params.role]
    }

    def updateUser() {
        def user = userService.getUser(params.id)
        if (!(params.username)) {
            flash.message = "You have to enter a username!"
            redirect(action: "userDetails")
        }
        else {
            user.username = params.username
            user.person.title = params.title
            user.person.given = params.given
            user.person.middle = params.middle
            user.person.family = params.family
            userService.updateUser(user)
            redirect(action: "index")
        }
    }
}
index()
开始,用户将获得当前可用的所有角色和用户的列表。然后,用户可以选择一个链接到
userDetails()
-操作的特定用户。在那里,我用
params.id
检索用户的
id
信息,用
params.role
检索用户的角色名

userDetails.gsp
中,用户可以更新用户的某些属性。但是,如果他没有输入用户名,他应该被重定向回
userDetails.gsp
。(我知道我可以用gsp中的
required
-属性检查这一点-这只是为了了解功能)

这就是我遇到的问题——当使用
userDetails()
操作时,两个参数被传递给gsp。但现在提交重定向时,我不知道如何访问此信息。因此,呈现
userDetails.gsp
会导致错误,因为有关
用户
角色
的必要信息不可用


任何帮助都将不胜感激

您应该更改提交给
updateUser
操作的表单(大概),以便它也在角色中发送。然后,如果提交的数据无效,您只需在重定向回
userDetails
操作时包含这些参数

def updateUser() {

    def user = userService.getUser(params.id)

    // I'm not sure if this the right way to get a Role from the role parameter
    // but presumably you can figure that out yourself
    def role = roleService.getRole(params.role)

    if (!(params.username)) {
        flash.message = "You have to enter a username!"
        redirect action: "userDetails", params: [id: params.id, role: params.role]
    }
}

另外,手动将每个参数绑定到
user
对象的方式是不必要的冗长。可以自动执行此操作。

它正在工作。实际上,为了能够在
userDetails()
-操作中检索
params
,我必须放置以下内容:
重定向操作:“userDetails”,params:[id:params.id,role:params.role]
。非常感谢。我不是100%确定
params
是否有效,我已经用您的信息更新了我的答案