Grails «render» рендерит шаблон

В моем контроллере Grails я отвечаю на вызов AJAX и используюrender вернуть текст:

def ajaxRandomPersonName = {
    def person = get a random person ...
    render "Name: ${person.name}"
}

Проблема в том, чтоrender отображает весь шаблон Таким образом, вместо рендеринга «Имя: Джон» он отображает все значки, навигацию и т. Д., Определенные в шаблоне. Как я могу получитьrender просто сделать без шаблона?

Я в значительной степени следую главе 1 «Grails в действии» (стр. 28), используя Grails 1.1.1.

Следовать за: Возврат false за предложение Rhysyngsun не оказывает никакого влияния. Я также попытался установить для шаблона значение null, но он по-прежнему отображает шаблон:

def ajaxRandomPersonName = {
    def person = get a random person ...
    render (template:null, text:"Name: ${person.name}")
}

render его сердце склонно рендерить его через шаблон независимо от того, что я делаю.

Продолжайте 2: Параллельное обсуждение в списке рассылки grails-user.

Продолжайте 3Пример кода: я спарил свой код как минимум, и он все еще показывает нежелательный рендеринг шаблона.

Контроллеры / PersonController.groovy:

class PersonController { 
    def index = { } 
    def home = { [message:"Hello"] } 

    def ajaxTest = { 
        println "ajaxTest called" 
        render text: "ajax message" 
    } 
} 

views / person / home.gsp (просмотр страницы для домашнего метода)

<html> 
<head> 
    <title>Home View</title> 
    <g:javascript library="prototype" /> 
</head> 
<body> 
    <p> 
        <g:remoteLink action="ajaxTest" update="test1">ajax call</g:remoteLink> 
    </p> 
    <p>Message = ${message}</p> 
    <p id="test1">Blank</p> 
</body> 
</html> 

views / layouts / person.gsp (шаблон макета для персонального контроллера)

<html> 
<head> 
    <title>Test App - <g:layoutTitle/></title> 
    <g:layoutHead/> 
</head> 
<body> 
    <h1>Test App</h1> 
    <g:layoutBody/> 
</body> 
</html> 

Я получаю доступ к контроллеру человека с видом на дом:HTTP: // локальный: 8080 / тест / человек / дома

страница отображается следующим образом: ajax-вызов приложения Test (гиперссылка) Message = Hello Blank

«Тестовое приложение» из шаблона. Когда я нажимаю «ajax call», он выполняет асинхронный вызов метода ajaxTest PersonController (проверяется с помощью println). Все, что делает ajaxTest - это println и визуализирует статический текст. Этот результат в следующем:

Test App 
ajax call 
Message = Hello 
Test App 
ajax message 

Обратите внимание, что шаблон отображается в «test1»<p> что приводит ко второму «Тестовое приложение».

Я бегу Grails 1.1.1. Есть идеи? Код кажется простым. Я скачал исходники Grails и посмотрел на RenderDynamicMethod.java. Это не делает никакого рендеринга шаблона, если шаблон не находится в списке аргументов, который это не делает. Так что мое единственное предположение, что что-то в самом разгаре - это рендерить шаблон снова

Ответы на вопрос(4)

Ваш ответ на вопрос