Данные контроллера Grails, переданные для просмотра, являются нулевыми при доступе к просмотру?

У меня есть приложение с некоторыми контроллерами, представлениями и макетами. Я в основном пытаюсь передать некоторые данные из контроллера в представление. Рассматриваемое представление использует макет с именем main.gsp в папке макетов. Поэтому я использовал приведенный ниже код, чтобы попытаться передать данные в представление:

def index = {

        String test = "Testing"
                println(test)
        render(view:"index", name: test)
    }

Тогда на виде это выглядит так:

<html>

<head>
    <title>My App</title>
    <meta name="layout" content="main" />
</head>

<body>

        <h1>${name}</h1>
.......

Затем, когда я запускаю приложение, я вижу, что данные печати в порядке, однако данные не передаются в представление, потому что используется макет? если да, то как мне обойти это? Вместо этого я могу получить доступ к метаобъекту? Заранее спасибо :-)


person user723858    schedule 30.10.2012    source источник


Ответы (2)


Попробуй это:

def index = {
    String test = "Testing"
    println(test)
    [name: test]
}

Это отобразит ваше представление index по соглашению.

С вашего контроллера вы должны передать model (карту) в свое представление.

Теперь вы можете использовать элементы возвращенной карты в своем представлении:

<h1>${name}</h1>

Дополнительные сведения см. в документах.

person aiolos    schedule 30.10.2012
comment
Спасибо, я, наконец, отследил проблему до того, что я передавал данные в представление внутри оператора If, и по какой-то причине это не работает: S - person user723858; 30.10.2012

Пример из aiolos правильный, но когда вам действительно нужно использовать метод render() с некоторыми данными в модели, вы должны называть его следующим образом:

render( view:'index', model: [ 'name':test ] )
person Tom Metz    schedule 30.10.2012