grails 域而不保存它

发布于 2024-10-17 13:30:15 字数 424 浏览 4 评论 0原文

我有:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

贱贱哒 2024-10-24 13:30:15

if-else 标签库怎么样:

<g:if test="${userList}">
     <!-- Your form for no-user case here. -->
</g:if>
<g:else>
     <!-- Your form for g:each case here. -->
</g:else>

How about the if-else taglib:

<g:if test="${userList}">
     <!-- Your form for no-user case here. -->
</g:if>
<g:else>
     <!-- Your form for g:each case here. -->
</g:else>
夏至、离别 2024-10-24 13:30:15

有点脏,但它应该可以工作:

def userList = [];
if(!User.findAllByGrade(10)){
   userList.add([:]);
}else{ ..... } 

因此,无需创建新的 User 实例,只需向列表中添加一个空的哈希表即可;如果结果看起来不正常,您需要做更多的工作:

def userList = [];
if(!User.findAllByGrade(10)){
   userList.add([name:"", age:"", foobar:""]);
}else{ ..... } 

即在哈希表中创建与 User 的属性相对应的条目。

A bit dirty, but it should work:

def userList = [];
if(!User.findAllByGrade(10)){
   userList.add([:]);
}else{ ..... } 

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:

def userList = [];
if(!User.findAllByGrade(10)){
   userList.add([name:"", age:"", foobar:""]);
}else{ ..... } 

I.e. create entries in the hashtable that correspond to the attributes of User.

青芜 2024-10-24 13:30:15

如何将 null 添加到列表而不是 new User(),然后在 gsp 中使用安全导航运算符 .? 引用用户的属性(就像 user?.name 这样就不会抛出 NPE)

所以代码将更像:

def userList = [];
if(!User.findAllByGrade(10)){
   userList. << null
}else{ ..... } 


<g:each in="${userList}" var="user"> 
<!-- my big form -->
    <g:textField name="name" value="${user?.name}" />
</g:each>

How about adding null to the list instead of new User() and then, in gsp, referring to user's properties using safe navigation operator .? (like user?.name so NPE wouldn't be thrown)

So the code will be more like:

def userList = [];
if(!User.findAllByGrade(10)){
   userList. << null
}else{ ..... } 


<g:each in="${userList}" var="user"> 
<!-- my big form -->
    <g:textField name="name" value="${user?.name}" />
</g:each>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文