grails - 如何在gsp grails上对特定位置做出响应

标签 grails web rendering gsp

我是grails和groovy的新手。
我试图找出如何在同一个gsp中的grails Controller 中(但在该gsp的不同部分中)呈现一个 Action 的响应,作为接受请求的gsp(在这种情况下为Web表单gsp页面)?

欢迎任何链接或花言巧语,或直接回答“做此事”。

我试图在Google上搜索它,但不确定将什么用作搜索词,也找不到简明的答案。

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

这是我正在使用的代码。这是一个Grails应用程序,我在其中使用 bootstrap 模板(当然可以在Internet上免费获得)。

现在,用于功能的实际代码本身可以正常工作。我遇到的问题是:

我有一个使用css模板和另一个gsp模板进行布局的gsp页面。我可以在gsp页面中使用以下代码(代码段)以gsp ​​+ css tempate内部的形式启动页面:
<g:layoutBody/>

这使我可以在此gsp文件中为请求调用主叫 Controller 代码:
<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 Null指针异常。

有人可以建议并向我展示最佳方法吗?
==================== END of Updated question ===================

谢谢。

Ironmantis7x

最佳答案

您可以尝试使用Grails templates
基本上,模板是 View 的(可重用)部分。
信息:
因此,您创建模板文件bookTemplate.gsp,像往常一样将所有gsp / html代码放入其中(但只是一部分,如果它将在主体中使用,则不要添加htmlbodyhead标记等。
示例:

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

然后,将该模板渲染到gsp页面中您想要的位置(带有简单的grails render标签。它将简单地进行编译(因为模板中的代码将粘贴到gsp View 中)。
渲染:
<g:render template="bookTemplate" model="[book: myBook]" />

关于grails - 如何在gsp grails上对特定位置做出响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335476/

相关文章:

grails - 在 grails 中记录

css - 使用 Grails 的插件

php - 构建轻量级面向公众网站的工具箱/框架

javascript - React表如何​​实现过滤逻辑?

html - 网站副本不是我的

wpf - 可以在给定区域而不是整个 WPF 控件上使用 InvalidateVisual() 吗?

grails - 在 Grails 中支持基本身份验证和基于表单的身份验证

grails - ImageMagick与Grails

css - Chrome 呈现的颜色与 Safari 和 Firefox 不同

c++ - 这种在 Qt 中渲染旋转椭圆的尝试有什么问题?