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

时间:2014-02-14 23:31:01

标签: hibernate grails model-view-controller gorm

自动生成时,视图通常包含以下代码:

<td><g:link action="show" id="${xyzInstance.id}">${fieldValue(bean: xyzInstance, field: "name")}</g:link></td>

当我们点击URL时,它会将其重定向到控制器中的show方法。我有一组记录,我在index中显示而没有查询默认数据库。我从XML中获取它们。我想将其中一个值(单击)发送给Controller。他们没有ID字段。所以当我将${xyzInstance.id}更改为${xyzInstance.name}时会抛出org.hibernate.TypeMismatchException。如何绕过Hibernate层将名称从视图传递给控制器​​?

1 个答案:

答案 0 :(得分:0)

当然,您无法将xyzInstance.name传递给id,因为id已映射到hibernate。因此类型不匹配,因为name是一个字符串而id是一个整数类型。

您应该将name作为参数传递,然后在控制器中检索它。 所以不要这样做

<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 
    }

}

希望这有帮助