コントローラーからビューに HashMap を送信しています:
def list2 = [id:params?.id, title:params?.title, domain:params?.domain, orderOfSubpage:params?.orderOfSubpage] render(view: "list", model: [subpageInstanceList: list, subpageInstanceTotal: list.getTotalCount(), searchParams:list2])
ユーザーがテーブル ヘッダーをクリックすると、この HashMap をコントローラーに送り返します。
<g:sortableColumn property="id" title="Id" class="td-id-class subpage-td" params="['searchParams':searchParams]"/>
ここでフラグが設定されているデバッガーで値をチェックしています:
def map = params
値は次のとおりです。
searchParams={id=, title=, domain=, orderOfSubpage=}
すでに文字列であるこの「マップ」から値を取得しようとしています:
def map2 = params?.searchParams def id = map2?.id //here is an Exception (checked in debugger)
私が戻ってきた例外は次のとおりです。
Class groovy.lang.MissingPropertyException Message No such property: id for class: java.lang.String
ArrayList で同じことを行っている場合、問題はありません。すべて正常に動作し、List は常に List です。Map が String に変換/キャストされるのはなぜですか?
質問:コントローラーに送り返されるオブジェクトが文字列である、または少なくとも文字列のように動作するのはなぜですか?