def handleLogin = {
def hashPassd = DU.md5Hex(params.password)
// Find the username
def user = User.findByUserNameAndPassword(params.userName, hashPassd)
if (!user) {
flash.message = "User not found for userName: ${params.userName}"
redirect(action:'index')
return
} else {
session.user = user
redirect(controller:'todo')
}
}
if条件如何需要return语句?而else块不需要它?
答案 0 :(得分:3)
在这种情况下,不需要返回。如果返回不存在,它将继续在if之后,这是方法的结束,从而返回。
答案 1 :(得分:1)
回归并非绝对必要,但这是一个很好的习惯。控制器操作中的render
和redirect
等调用通常是操作的概念“结束”,有时会容易忘记并将重定向视为{{1} }
return
这会在运行时失败,可能会有一个相当模糊的错误消息,并且为了避免这种可能性,最好记住在调用def someAction() {
if(!params.id) {
flash.message = "no ID provided"
redirect action:'error'
}
def myObj = MyObj.get(params.id)
//...
}
或{{1}之后放置一个明确的return
}}。当我回来更改我最初在6个月前写的控制器动作时,这种事情一直困扰着我......