2016-10-31 55 views
0

我是grails和groovy的新手。 我想了解如何呈现从grails控制器中的操作响应在同一个gsp中 - 但在gsp的不同部分 - 作为接受请求的gsp(在本例中是一个web表单gsp页面) ?如何呈现对gsp grails上特定位置的响应

任何链接或turotials或只是直接点“做这种”的答复是欢迎的。

我试图谷歌搜索它,但我不知道如何使用作为一个搜索词,我找不到一个简洁的答案。

========= UPDATE TO QUESTION (INCLUDING SOME CODE) ========= 

这是我正在使用的代码。这是一个Grails应用程序,我使用的是引导程序模板(当然可以在互联网上免费使用)。

现在实际的代码本身的功能工作。我有一个问题是这样的:

我有一个gsp页面,使用css模板和另一个gsp temlate进行布局。我可以开始页面,在我的GSP页面使用此代码(段)的GSP + CSS tempate内:

<g:layoutBody/> 

这让我打电话给我的呼叫控制器代码在此GSP文件的要求:

<body> 
<g:form name="form" controller="apiStart" id="form"> 
    <div><g:select name="protocolType" value="restCall" from="${["-select-", "GET", "POST", "PUT", "DELETE"]}"/> &nbsp <label>URL: </label><g:textField name="url" value="${url}" /> 
    &nbsp <label>username: </label><g:textField name="userName" value="${userName}" /> &nbsp <label>password: </label><g:textField name="passWord" value="${passWord}" /></div> 

    %{--<div class="text-field"><label>URL: </label><g:textField name="url" value="${url}" /></div>--}% 
    %{--<div class="text-field"><label>username: </label><g:textField name="userName" value="${userName}" /></div> 
    <div class="text-field"><label>password: </label><g:textField name="passWord" value="${passWord}" /></div>--}% 
    <br> 
    <div><label>Use Advanced Parameters?</label><g:checkBox name="useAdvParms" value="${false}" /></div> 
    <div class="text-field"><label>Header1: </label><g:textField name="header1" value="${header1}" /> &nbsp <label>Value1: </label><g:textField name="value1" value="${header2}" /></div> 
    %{--<div class="text-field"><label>Value1: </label><g:textField name="value1" value="${header2}" /></div>--}% 
    <div class="text-field"><label>Header2: </label><g:textField name="header2" value="${header3}" /> &nbsp <label>Value2: </label><g:textField name="value2" value="${header4}" /></div> 
    %{--<div class="text-field"><label>Value2: </label><g:textField name="value2" value="${header4}" /></div>--}% 
    <br> 
    <div class="submit"><g:actionSubmit value="Submit" action="save"/></div> 
</g:form> 
</body> 

然后为响应这一GSP代码:

<body> 
<h3>API Test Results</h3> 
API Tested: ${apiStart.url}, Response: ${apiStart.response3} 
<br> 
%{--<g:textArea name="myField" value="myValue" rows="20" cols="100"/>--}% 
<div class="textarea"><label>Output</label><br><g:textArea name="myField" value="${apiStart.result3}" /> 
</div> 
%{--Responce Code: ${apiStart.response3}<br>--}% 
%{--Response: <br> ${apiStart.result3} <br>--}% 

</body> 

我的问题:它工作正常作为单独的页面。我想在与调用请求相同的页面上呈现请求的结果。

合同所附截屏

:我希望把结果在文本框中它说:“这里的输出显示....” screenshot of gsp page

我认为在Grails的模板是去了解它的方式。但是当我尝试将模板插入代码的那部分时,我得到一个Java空指针异常。

有人可以建议并告诉我最好的方法吗?

==================== END of Updated question =================== 

谢谢。

ironmantis7x

+0

你能提供一个你想要存档的例子吗?你是否意味着一些阿贾克斯的东西? – rvargas

+0

我不是意味着Ajax的东西。有没有办法在纯graiks/groovy/css/html?我还没有尝试过任何东西,因为我找不到任何实例来建立它,因为我不确定我的问题是否清楚。 – ironmantis7x

+0

@rvargas \t 我不是意味着Ajax的东西。有没有办法在纯graiks/groovy/css/html?我还没有尝试过任何东西,因为我找不到任何实例来建立它,因为我不确定我的问题是否清楚。 – ironmantis7x

回答

1

您可以尝试使用Grails templates。基本上模板是一个视图(可重用)的一部分。
信息
因此,您创建的模板文件bookTemplate.gsp,把所有的GSP/HTML代码在那里像往常一样(只是部分,它是否会在人体中使用,那么不加htmlbodyhead标签等。

<div class="book" id="${book?.id}"> 
    <div>Title: ${book?.title}</div> 
    <div>Author: ${book?.author?.name}</div> 
</div> 

然后,你希望他们(用一个简单的Grails render标签你渲染模板到地方普惠制页它只会被编译(根据码。模板会被粘贴到GSP视图)
渲染

<g:render template="bookTemplate" model="[book: myBook]" /> 
+0

不??不是你想要的东西? –

+0

我认为这会工作......我现在正在尝试它(工作让我忙了几天) – ironmantis7x

+0

这不断抛出一个错误...我忘了提及我在我的grails应用程序中使用bootstrap主题。如何使用具有引导流主题的模板...? – ironmantis7x

1

我不知道你的Grails的版本,但在2.4.5和MA在你的版本YBE,你可以使用: http://docs.grails.org/2.4.x/ref/Tags/submitToRemote.html

而且,看一下属性更新:

更新(可选) - 要么含有的元素的地图更新 “成功”或'失败”状态,或与元素ID 更新,在这种情况下故障事件会被忽略

而且你还可以在某些事件触发的JavaScript字符串,...

在submitToRemote按钮中调用的操作中,可以渲染模板(但如果渲染模板,则不要将布局放置在此模板中,否则将显示所有网站结构...),并且会显示它在具有您在“更新”属性中放入的ID的HTML元素中。

链接中给出的示例很有趣。