无法访问控制器中的隐藏字段或参数

时间:2012-10-24 20:19:40

标签: grails gsp

我将params以及客户obj从控制器传递给gsp页面。例如

render(view:"finish", params: params, model:[customer: customer])

finish.gsp使用params和传递的customer对象打印表单字段。例如${params.name}${customer.name}。在完成页面上选择完成按钮后,我想传递参数或客户对象值以保存客户对象。所以我在finish.gsp上设置隐藏字段。

  <g:actionSubmit action="save" value="Done" class="button1" params ="${customer}"/>
  <g:hiddenField name="kbc" value="${params}" />
</g:form>`

我能够将println params.kbc的保存操作方法的值视为

[contactBy:email, appointmentDate:Wed Oct 24 14:54:00 CDT 2012, appointmentDate_day:24, appointmentDate_hour:14, sentReminder:on, appointmentDate_month:10, emailAddress:jaimataji@jaimataji.com, lookingFor:0, appointmentDate_year:2012, appointmentDate_minute:54, _action_finish:Next, myGroup:0, _sentReminder:, description:test, name:abc, contactNo:7777777777, action:index, controller:customer]`</b>

但是当我尝试访问params.kbc.name时,它会引发错误说

No such property: name for class: java.lang.String

我不知道我哪里错了。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:4)

我相信params对象不会尝试解析/转换传递数据的内部结构。它只是一个http请求参数。因此,您只能拥有String

如果您需要将String转换为Map,则应编写自己的转换器。似乎这不是你想要的。

或者,如果您需要params.kbc.name,则可以将其作为<g:hiddenField name="kbc.name" value="${params.name}" />传递给其他字段。

相关问题