这是我的第一个grails项目,很抱歉,如果这是一个新的问题,但我没有找到任何相关内容。
我正在使用带有mongoDB的Grails 3.3.2,并且使用GORM调用DB。
我创建了一个方法,该方法接收用户列表以创建包含用户及其特定角色的MAP,并在视图中呈现它。只有管理员才能访问此页面,现在我不希望登录的管理员可以访问他的权限/角色,换句话说,管理员只能更改其他管理员的角色。 这样一来,系统就没有错误的管理员了。
这是方法:
@Secured(["ROLE_Administrador"])
def renderListUsers(def listUsers) {
//remove o proprio utilizador antes de tudo!
// THIS PRINTLN !!
//println(listUsers)
listUsers.remove(User.findByUsername(getPrincipal().username))
def usersWithRole = [:]
for (user in listUsers) {
usersWithRole[user.username] = UserRole.findByUser(user).role.toString().split("_")[1]
}
render(view: "listUsers", model: [users: listUsers, userRoles: usersWithRole])
}
这个方法工作得很好,问题是我只要添加“listUsers.remove(...)”(第7行)来删除已登录的用户我就getting this error而且我没有'理解为什么,然后我发现只有当删除的用户在该列表的索引0中时才会出现错误。
现在我发现如果我将“println(listUsers)”添加到它之前就行了!即使删除的对象在索引0中。
这是groovy上的已知错误还是我做错了什么?我不想在那里留下那份印刷品。
感谢您的时间!
编辑: 搞定了!这样:
def loggedUser = User.findByUsername(getPrincipal().username)
if (loggedUser in listUsers) {
listUsers.remove(loggedUser)
}
我知道我需要添加此验证,但我认为它不会解决此问题。