【问题标题】:HashMap sent from view is a String object in controller从视图发送的 HashMap 是控制器中的 String 对象
【发布时间】:2013-02-06 09:25:55
【问题描述】:
  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。为什么 Map 转换/转换为字符串?
问题: 为什么返回给控制器的对象是字符串或至少表现得像字符串?

【问题讨论】:

    标签: grails


    【解决方案1】:

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

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

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

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

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

    甚至:

    params="${searchParams}"
    

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      相关资源
      最近更新 更多