我是 Grails 的新手,我试图通过在我的 *service.groovy
中调用 save()
来保存域对象,如下所示
render " ${user.username}"
render " ${user.email}"
render " ${user.password}"
def savedUser = user.save(flush: true)
if(savedUser!=null) {
return savedUser
} else {
return user
}
渲染显示所有元素都具有从 Controller 传递的值。 但是在 save() 中抛出了 NullPointerexception。 实际得到的错误是
错误 errors.GrailsExceptionResolver - 处理请求时发生 NullPointerException:[POST]
可能发生了验证错误,但我使用命令类检查了 Controller 中的所有验证错误。
如何避免这里的异常?
请您参考如下方法:
这是非常不标准的代码。与其检查空返回值,更常见(并且明智/有用)的是检查是否存在验证错误。例如
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
如果您使用的是标准模板(或类似模板),那么这应该可以正常工作,因为那里有检查是否存在附加错误并显示它们的逻辑。