Переменные контроллера Grails не видны в представлениях - PullRequest
7 голосов
/ 09 апреля 2011

Я совсем новичок в Grails. Я только заметил, что переменные в контроллере не видны в представлении. Я могу получить значения переменных только тогда, когда назначу их в область. Это стандартный способ Grails или я делаю это неправильно. Кроме того, является ли область параметров правильной или я должен использовать сессии, servletContext?

В контроллере

String uploadLocation = grailsApplication.config.uploads.location.toString()
params.put "upLoc", uploadLocation

В представлении

<td> <input type="text" value="${params.get('uploc')}/${fileResourceInstance.decodeURL()}"></input></td>

Я очень хорошо знаком с Ruby on Rails, и в RoR это обрабатывается совсем по-другому. Спасибо.

Ответы [ 3 ]

11 голосов
/ 09 апреля 2011

Вы можете сделать это, как говорит Марисель, но есть и другой способ (я думаю, что это способ по умолчанию): вернуть значения, которые вы хотите передать представлению в функции действия.Например,

def test = "abc"
def num = 3

return [testInView: test, numInView: num]

Затем вы можете получить доступ к $ {testInView}, $ {numInView}

Еще один немного другой способ: вы можете пренебречь ключевым словом return, это "отличный способ"чтобы вернуть последнее значение функции.

6 голосов
/ 09 апреля 2011

Вам нужно передать вашу переменную как часть модели через метод рендеринга в вашем действии контроллера, например:

String uploadLocation = grailsApplication.config.uploads.location    
render(model: [uploadLocation: uploadLocation])

Тогда в представлении вы можете просто сделать:

<td> 
   <input type="text" value="${uploadLocation}/${fileResourceInstance.decodeURL()}"/>
</td>

С другой стороны, если это значение определено в Config.groovy, вы также можете сделать это в своем gsp:

<%@ page import="org.codehaus.groovy.grails.commons.ConfigurationHolder as CH" %>

<td> 
   <input type="text" value="${CH.config.uploads.location}/${fileResourceInstance.decodeURL()}"/>
</td>

Для получения более подробной информации смотрите документацию Grails .

1 голос
/ 11 апреля 2011

Одна интересная заметка.Если вы ничего не возвращаете из своего действия, тогда все переменные в области действия действия будут доступны в вашем представлении, как описано здесь: http://www.grails.org/Controllers+-+Models+and+Views

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...