我是Grails的新手,我尝试通过调用save()
中的*service.groovy
来保存域对象,如下所示
render " ${user.username}"
render " ${user.email}"
render " ${user.password}"
def savedUser = user.save(flush: true)
if(savedUser!=null) {
return savedUser
} else {
return user
}
渲染显示所有元素都具有从控制器传递的值。 但是在save()中抛出了NullPointerexception。 得到的实际错误是
错误errors.GrailsExceptionResolver - 处理请求时发生NullPointerException:[POST]
可能发生了验证错误,但我使用命令类检查了控制器中的所有验证错误。
如何在这里避免异常?
答案 0 :(得分:1)
这是非常非标准的代码。而不是检查空返回值,检查是否存在验证错误更常见(并且合理/有用)。 E.g。
user.save(flush: true)
if (user.hasErrors()) {
// do something with the invalid "user" instance
}
else {
// do something with the valid "user" instance
}
对于您的场景,您可以忽略返回值并仅使用原始实例:
user.save(flush: true)
return user
如果您正在使用标准模板(或类似的东西),那么这应该可以正常工作,因为那里有逻辑可以检查是否存在附加错误并显示它们。