Grails, не удается получить доступ к зарегистрированному экземпляру пользователя из gsp

Итак, вот в чем дело: у меня есть пользовательский класс secUser, который static hasMany = [pid:Process], также я использую Spring Security (не уверен, что это связано).

Что я пытаюсь сделать: отобразить раскрывающийся список, содержащий pids для текущего пользователя, вошедшего в систему, понятия не имел, как это сделать, но после того, как поигрался, сделал это

<g:if test="${secUserInstance?.pid}"> <g:select optionKey="id" optionValue="pid" name="pid" from="${secUserInstance.pid}" />

Мой вопрос: когда я помещаю этот код на главную страницу /, он ничего не делает, однако, если я перехожу к /secUser/show/1, он показывает список pids, принадлежащих пользователю. Не могу понять, почему он получает информацию, когда я попал в secUser/show, но больше нигде...

P.S. Я новичок в Grails и Stackoverflow, но я застрял на этом уже несколько дней и не знаю, куда еще можно обратиться.


person Mr.Ivan    schedule 11.07.2013    source источник


Ответы (1)


Таким образом, ваш путь "/" подключен к какому-то контроллеру в UrlMappings, в этом контроллере, вероятно, должно быть static defaultAction = "list", что указывает на метод, который будет обрабатывать ваш путь "/", или если не задано действие по умолчанию, то это будет метод index(){...}. Таким образом, метод, отвечающий за путь "/", не передает secUserInstance в ваш файл "methodName".gsp, и поэтому вы не можете его получить. В то время как в /secUser/show/1 вы получаете доступ к методу secUserController show, который имеет [secUserInstance : secUserInstance] или что-то подобное, и передает этот объект в файл gsp. Вы можете добавить secUserInstance доступ к каждой странице, используя ссылки на фильтры: Добавить вошедшего в систему пользователя в контекст для всех страниц GSP Или просто передать этот объект пользователя в свой метод, ответственный за '/'

person Aivaras    schedule 12.07.2013
comment
Что-то вроде продолжения, у меня работает фильтр, но он по-прежнему ничего не показывает в корне «/», но показывает что-то во всех других контроллерах. Я думаю, это потому, что '/' не имеет подключенного к нему контроллера... - person Mr.Ivan; 16.07.2013
comment
Я считаю, что вы должны проверить UrlMappings.groovy в вашем каталоге conf и посмотреть, есть ли у вас что-то прикрепленное к "/", в противном случае добавьте "/"(controller:"main") или что-то еще, что «другое» зависит от того, куда вы хотите его направить. - person Aivaras; 16.07.2013