gpt4 book ai didi

Grails "render"渲染模板

转载 作者:行者123 更新时间:2023-12-04 03:10:12 25 4
gpt4 key购买 nike

在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com