Grails 从视图发送的HashMap是控制器中的字符串对象

Grails 从视图发送的HashMap是控制器中的字符串对象,grails,Grails,我正在将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:li

我正在将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]"/>
    
    该值为:

    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。为什么要将转换/强制转换映射到字符串?
    问题:为什么发送回控制器的对象是字符串或者至少是字符串

    来自:

    params(可选)-包含请求参数的映射

    您有:
    。但是searchParams不是一个合适的请求参数,因为它本身就是一个映射

    明确添加所有值,如id、标题、域和orderOfSubpage,如下所示:

    params="[id:searchParams.id, domain:searchParams.domain, ...]"
    
    甚至:

    params="${searchParams}"
    
    params="${searchParams}"