空指针异常和空对象

| 我有以下几行代码:
def edit = {
        if (session.user.id != params.id){
            flash.message = \"You can only edit yourself.\"
            redirect(action:list)
            return
            }
        def user = User.get(params.id)
            if (!user){
                flash.message = \"Login first before you edit anyone.\"
                redirect(action:list)
                }
            else{
                return [user:user]
                }
        }
我对groovy和grails还是比较陌生,所以请对我轻松一点。 无论如何,以上代码仅在用户登录到站点时才有效。 当用户未登录时尝试编辑内容时,“ 1”会引发异常。这又向我显示以下内容:
java.lang.NullPointerException: Cannot get property \'id\' on null object

    at com.hyun.UserController$_closure4.doCall(UserController.groovy:25)

    at com.hyun.UserController$_closure4.doCall(UserController.groovy)

    at java.lang.Thread.run(Thread.java:662)
问题是我该如何正确处理?我相信答案在于以下几方面:
if (!user){
                flash.message = \"Login first before you edit anyone.\"
                redirect(action:list)
                }
但是我真的不知道如何解决这个问题。请帮我! Flash.message无法正常工作。     
已邀请:
我相信Tomas Lycken是正确的,请尝试以下方法:
if (session?.user?.id != params.id)
有关安全导航操作符(?。)的更多详细信息。     
我不是groovy或grails的专家(实际上我从未与之合作过...),但是我认为问题在于,您要做的第一件事是检查
session.user.id
(在您的第一个
if
子句中)。如果用户未登录,则
session.user
可能会返回
null
,这使对
.id
的调用引发您所看到的异常。     

要回复问题请先登录注册