Grails "render"渲染模板

标签 grails gsp

在我的 Grails Controller 中,我正在响应 AJAX 调用并使用 render返回文本:

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

问题是render呈现整个模板。因此,它不仅呈现“姓名:约翰”,还呈现模板中定义的所有图标、导航等。我如何获得 render只渲染没有模板?

我正在使用 Grails 1.1.1 遵循“Grails in Action”(第 28 页)的第 1 章。

关注 :
根据 Rhysyngsun 的建议返回 false 没有影响。我也尝试将模板设置为 null 但它仍然呈现模板:
def ajaxRandomPersonName = {
    def person = get a random person ...
    render (template:null, text:"Name: ${person.name}")
}
render无论我做什么,它都一心要通过模板渲染它。

跟进2 :Parallel discussion在 grails-user 邮件列表中。

跟进3 :示例代码:
我将我的代码配对到最低限度,它仍然显示出不需要的模板渲染。

Controller /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(人员 Controller 的布局模板)
<html> 
<head> 
    <title>Test App - <g:layoutTitle/></title> 
    <g:layoutHead/> 
</head> 
<body> 
    <h1>Test App</h1> 
    <g:layoutBody/> 
</body> 
</html> 

我使用主 View 访问个人 Controller :
http://localhost:8080/test/person/home

页面呈现为:
测试应用
ajax 调用(超链接)
消息 = 你好
空白的

“测试应用程序”来自模板。当我单击“ajax 调用”时,它会异步调用 PersonController 的 ajaxTest 方法(使用 println 验证)。 ajaxTest 所做的只是 println 和呈现静态文本。结果如下:
Test App 
ajax call 
Message = Hello 
Test App 
ajax message 

请注意,模板正在“test1”中呈现<p>这导致第二个“测试应用程序”。

我正在运行 Grails 1.1.1。有任何想法吗?代码看起来很简单。我下载了 Grails 源代码并查看了 RenderDynamicMethod.java。它不会进行任何模板渲染,除非模板在参数列表中,而事实并非如此。所以我唯一的猜测是 Steam 再次渲染模板。

最佳答案

已解决:添加 contentType 导致模板未呈现:

render text: "Name: ${person.name}", contentType: "text/plain"

关于Grails "render"渲染模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464933/

相关文章:

javascript - 是否可以将 javascript 值设置为 <g :set var ="x">

Grails 2 与 Grails 3

validation - Grails 2.2.0 - 验证问题

grails - Grails无法在插件中引用名为Config的域类

grails - Spring Security UI-无法打开注册/忘记密码页面

forms - Grails表单和URL映射

grails - 在grails中创建链接

grails - 将i18n消息作为参数传递给Grails模板

html - HTML&GRAILS-URL文本不显示为超链接

xml - Groovy:Xml:如何在gsp页面的文本区域中显示Xml响应