自动生成时,视图通常包含以下代码:
<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层将名称从视图传递给控制器?
答案 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
}
}
希望这有帮助