在Grails中将数据从视图传递到控制器时,在不调用Hibernate(GORM)的情况下传递参数

在Grails中将数据从视图传递到控制器时,在不调用Hibernate(GORM)的情况下传递参数,hibernate,grails,model-view-controller,gorm,Hibernate,Grails,Model View Controller,Gorm,自动生成时,视图通常具有如下代码: <td><g:link action="show" id="${xyzInstance.id}">${fieldValue(bean: xyzInstance, field: "name")}</g:link></td> 当我们单击URL时,它会将其重定向到控制器中的show方法。我有一组记录显示在索引中,而不从默认数据库查询。我是从XML中获取它们的。我想发送一个被点击的值给控制器。他们没有ID字段。因此,当

自动生成时,视图通常具有如下代码:

<td><g:link action="show" id="${xyzInstance.id}">${fieldValue(bean: xyzInstance, field: "name")}</g:link></td>
当我们单击URL时,它会将其重定向到控制器中的show方法。我有一组记录显示在索引中,而不从默认数据库查询。我是从XML中获取它们的。我想发送一个被点击的值给控制器。他们没有ID字段。因此,当我将${xyzInstance.id}更改为${xyzInstance.name}时,它抛出一个org.hibernate.typemischException。如何绕过Hibernate层将名称从视图传递到控制器?

当然,您不能将xyzInstance.name传递到id,因为id映射到Hibernate。因此存在类型不匹配,因为name是字符串,id是整数类型

您应该将名称作为param传递,并在控制器中检索它。 因此,与其这样做

<g:link action="show" id="${xyzInstance.name}">${fieldValue(bean: xyzInstance, field: "name")}</g:link>
希望这有帮助

<g:link action="show" params="[name:${xyzInstance.name}]">${fieldValue(bean: xyzInstance, field: "name")}</g:link>
def show(){
    if(params.name){
        //do some thing with name here 
    }

}