grails 域而不保存它
我有:
def userList = [];
if(!User.findAllByGrade(10)){
userList.add(new User());
}else{ ..... }
<g:each in="${userList}" var="user">
<!-- my big form -->
</g:each>
我需要显示一个表单,无论用户是否存在......所以我只是将“虚拟”用户添加到列表中。但它会产生错误:
消息:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:用户 原因:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:用户
我可以用来复制表单,但我只是想知道如何解决这个问题......
I have :
def userList = [];
if(!User.findAllByGrade(10)){
userList.add(new User());
}else{ ..... }
<g:each in="${userList}" var="user">
<!-- my big form -->
</g:each>
I need to display a form whether the user exists or not ... so I just add "dummy" user to the list. But it will produce errors:
Message: object references an unsaved transient instance - save the transient instance before flushing: User
Caused by: object references an unsaved transient instance - save the transient instance before flushing: User
I could use to copy the forms, but I just wonder how to solve this ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
if-else 标签库怎么样:
How about the if-else taglib:
有点脏,但它应该可以工作:
因此,无需创建新的 User 实例,只需向列表中添加一个空的哈希表即可;如果结果看起来不正常,您需要做更多的工作:
即在哈希表中创建与
User
的属性相对应的条目。A bit dirty, but it should work:
So instead of creating a new User instance, just add an empty hashtable to the list; if the result doesn't look ok, you need to do a bit more work:
I.e. create entries in the hashtable that correspond to the attributes of
User
.如何将
null
添加到列表而不是new User()
,然后在 gsp 中使用安全导航运算符.?
引用用户的属性(就像user?.name
这样就不会抛出 NPE)所以代码将更像:
How about adding
null
to the list instead ofnew User()
and then, in gsp, referring to user's properties using safe navigation operator.?
(likeuser?.name
so NPE wouldn't be thrown)So the code will be more like: