我看到一个示例,其中在LoginCommand对象内的客户验证器中使用了以下语法。
password blank:false, validator: { val, cmd ->
if(cmd.user && cmd.user.password != val)
return "user.password.invalid"
}
我的理解是,在if
条款中,我们正在检查两件事。首先,用户存在,其次,用户的密码与LoginCommand持有的密码匹配。检查用户是否存在似乎不是多余的?我的意思是如果用户不存在不会cmd.user.password
为空,因此测试会失败?为什么用户需要检查?
如果有必要,那么我们不能使用这种语法cmd.user?.password != val
在第二次检查中封装第一个用户存在检查吗?
答案 0 :(得分:2)
我的意思是,如果用户不存在,那么cmd.user.password将为null并且 因此测试会失败吗?
没有。如果用户不存在cmd.user.password
将抛出NullPointerException。
如果有必要,那么我们就不能封装第一个用户 使用此语法检查第二次检查 cmd.user?.password!= val?
你可以。这只是一种风格问题。无论你认为哪个更具可读性。