2013-02-06 3 views
1
  1. Я посылаю HashMap от контроллера для просмотра: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 всегда является списком. Почему Map преобразует/отбрасывает строку?
Вопрос: Почему объект, отправленный обратно контроллеру, является строкой или, по крайней мере, действует как строка?

ответ

2

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

PARAMS (необязательно) - это карта, содержащая параметры запроса

У вас есть: <g:sortableColumn ... params="['searchParams':searchParams]"/>. Но searchParams не является правильным параметром запроса, потому что он сам является картой.

Добавить все значения как идентификатор, название, домен и orderOfSubpage явно как:

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

или даже:

params="${searchParams}" 
Смежные вопросы