在我的Grails控制器我響應AJAX調用和使用render
返回文本:Grails的「渲染」渲染模板
def ajaxRandomPersonName = {
def person = get a random person ...
render "Name: ${person.name}"
}
的問題是,render
使得整個模板。因此,不是僅呈現「名稱:約翰」,而是呈現模板中定義的所有圖標,導航等。我如何才能讓render
僅使用模板進行渲染?
我非常喜歡使用Grails 1.1.1的「Grails in Action」(第28頁)第1章。
跟進: 根據Rhysyngsun的建議返回錯誤沒有影響。我也試過設置模板爲空,但它仍然呈現模板:
def ajaxRandomPersonName = {
def person = get a random person ...
render (template:null, text:"Name: ${person.name}")
}
render
有心臟一心使其通過模板,無論我做什麼。
後續2:Parallel discussion關於grails-user郵件列表。
跟進3:示例代碼: 我配對了我的最低代碼,它仍然表現出不想要的模板呈現。
控制器/ PersonController.groovy:
的意見/人/ 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>
的意見/佈局/ person.gsp(用於個人佈局模板控制器)
<html>
<head>
<title>Test App - <g:layoutTitle/></title>
<g:layoutHead/>
</head>
<body>
<h1>Test App</h1>
<g:layoutBody/>
</body>
</html>
我訪問的人控制器,主視圖: http://localhost:8080/test/person/home
頁面呈現爲: 測試應用程序 Ajax調用鏈接(hyperlink) 消息=你好 空白
「測試應用程序」 是從模板。當我點擊「ajax call」時,它會對PersonController的ajaxTest方法(使用println進行驗證)進行異步調用。所有ajaxTest都是println並呈現靜態文本。這個結果在下面:
Test App
ajax call
Message = Hello
Test App
ajax message
注意模板被「測試1」 <p>
導致第二個「測試應用程序」中呈現。
我正在運行Grails 1.1.1。有任何想法嗎?代碼看起來很直接。我下載了Grails源代碼並查看了RenderDynamicMethod.java。它不會進行任何模板渲染,除非模板在參數列表中,否則不會。所以我唯一的猜測就是蒸汽正在渲染模板。
你是怎麼知道這件事的? – 2010-01-14 20:59:30
是的,請詳細說明您在哪裏找到答案。另一方面,第1章本應花費我30分鐘,花了我數小時才完成,這真是令人遺憾。而且,我對第一次刺傷Grails感到非常失望 – 2011-09-17 15:56:19