Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java grails域而不保存它_Java_Hibernate_Grails_Dns_Gorm - Fatal编程技术网

Java grails域而不保存它

Java grails域而不保存它,java,hibernate,grails,dns,gorm,Java,Hibernate,Grails,Dns,Gorm,我有: def userList = []; if(!User.findAllByGrade(10)){ userList.add(new User()); }else{ ..... } <g:each in="${userList}" var="user"> <!-- my big form --> </g:each> def userList=[]; 如果(!User.findAllByGrade(10)){ 添加(新用户()); }否则{

我有:

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


<g:each in="${userList}" var="user"> 
<!-- my big form -->
</g:each>
def userList=[];
如果(!User.findAllByGrade(10)){
添加(新用户());
}否则{…}
我需要显示一个表单,无论用户是否存在。。。所以我只是把“虚拟”用户添加到列表中。但它会产生错误:

消息:对象引用未保存的临时实例-在刷新之前保存临时实例:User 原因:对象引用了未保存的临时实例-在刷新之前保存临时实例:用户

我可以用来复制表单,但我只是想知道如何解决这个问题…

taglib如何:


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

def userList = [];
if(!User.findAllByGrade(10)){
   userList.add([:]);
}else{ ..... } 
因此,与其创建新的用户实例,不如向列表中添加一个空哈希表;如果结果看起来不正常,您需要做更多的工作:

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

例如,在哈希表中创建与
User

属性相对应的条目,将
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>
def userList=[];
如果(!User.findAllByGrade(10)){

userList.@nightinagle2k1:对不起,如果用户不存在,您如何在g:each中获取信息?或者您不需要这些信息?这是正确的代码吗?如果您将新用户实例附加到已在Hibernate会话中的域对象,通常会出现此错误。上面的代码似乎没有这样做。是吗如果
或者
或者
失败了?以表单呈现瞬态对象对我来说很好。看起来你在试图保存的其他对象中引用了用户,或者Grails试图刷新。到底是什么操作导致了错误?错误到底在代码中的什么位置?如果是保存操作,你可以吗显示它的代码?@nightingale2k1,你知道grails为什么要在这个场景中进行保存吗?我想我也遇到了类似的问题。这是一个不必要的代码重复,至少需要将表单代码移动到单独的模板中。此外,我不认为有理由不让它按计划工作。@Victor:我不认为它将重复,因为在任何用户情况下,它似乎根本不需要用户信息。但是,等待确认。它只会在呈现的字段值上有所不同,对吗?呈现空域对象也会这样做,并且会呈现默认用户字段值;如果默认值更改,我们就不必更改GSP。
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>