我是 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 

如果您使用的是标准模板(或类似模板),那么这应该可以正常工作,因为那里有检查是否存在附加错误并显示它们的逻辑。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!