0

パラメーターと顧客オブジェクトをコントローラーから gsp ページに渡しています。例えば

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

finish.gsp は、渡されたパラメーターと顧客オブジェクトの両方を使用してフォーム フィールドを出力します。例:${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.kbcasの保存アクション メソッドの値を確認できます

[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

どこが間違っているのかわかりません。間違っている場合は修正してください。

4

1 に答える 1

4

オブジェクトparamsは、渡されたデータの内部構造を解析/変換しようとしないと思います。これは単なる http リクエスト パラメータです。したがって、 のみを持つことができますString

に変換する必要がある場合StringMap、独自のコンバーターを作成する必要があります。それはあなたが望むものではないようです。

または、必要に応じて、他のフィールドに Sameparams.kbc.nameとして渡すことができます。<g:hiddenField name="kbc.name" value="${params.name}" />

于 2012-10-24T20:27:43.893 に答える