1
  1. 我正在从控制器发送 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])
    
  2. 当用户单击表头时,我将此 HashMap 发送回控制器:

    <g:sortableColumn property="id" title="Id" class="td-id-class subpage-td" params="['searchParams':searchParams]"/>
    
  3. 我正在检查在此处设置标志的调试器中的值:

    def map = params
    

    值为:

    searchParams={id=, title=, domain=, orderOfSubpage=}
    
  4. 我正在尝试从这个已经是字符串的“地图”中获取值:

    def map2 = params?.searchParams
    def id = map2?.id //here is an Exception (checked in debugger)
    
  5. 我回来的例外是:

    Class groovy.lang.MissingPropertyException
    Message No such property: id for class: java.lang.String
    

当我对 ArrayList 做同样的事情时,没有问题,一切正常,List 始终是 List。为什么将转换/转换映射到字符串?
问题:为什么返回给控制器的对象是字符串或者至少表现得像字符串?

4

1 回答 1

2

http://grails.org/doc/latest/ref/Tags/sortableColumn.html

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

你有:<g:sortableColumn ... params="['searchParams':searchParams]"/>。但是 searchParams 不是一个合适的请求参数,因为它本身就是一个映射。

明确添加您的所有值,例如 id、title、domain 和 orderOfSubpage,例如:

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

甚至:

params="${searchParams}"
于 2013-02-06T14:25:48.260 回答