如何将部分模板加载到grails中的div中

Posted

技术标签:

【中文标题】如何将部分模板加载到grails中的div中【英文标题】:How to load a partial template into a div in grails 【发布时间】:2012-10-26 20:08:30 【问题描述】:

我是 grails 新手,找不到解决方案。

每当点击 Create Client 时,我想用部分模板 _client.gsp 的内容填充主内容 div。

我有以下 gsp 页面 admin.gsp

<!DOCTYPE html>
<html>
  <head>
    <title>Admin Create</title>
<meta name="layout" content="main"/>
  </head>
  <body>
    <aside class="sidebar span3">

      <ul class="nav nav-list">
        <li class="nav-header">Admin Console</li>
        <li class="create-client"><a href="#">Create Client</a></li>
        <li><a href="#">Library</a></li>
      </ul>
    </aside>

    <div class="main-content span7">
    </div>

    <g:javascript src="admin.js"/>
  </body>
</html>

我有一个名为 _client.gsp 的部分模板

<g:hasErrors bean="$client">
  <div class="alert alert-error alert-block client ">
    <g:renderErrors bean="$client" as="list" />
  </div>
</g:hasErrors>
<g:form controller="admin" action="createClient">               
  <div class="row">
    <legend>Create Client</legend>
      <div class="span4">
        <label>Client Name:</label>
        <g:textField name="client.name" />
      </div>
      <div class="span4">
        <label>Client Type:</label>
        <g:textField name="clientType.type"/>
      </div>
      <div class="span4">
        <label>External Id:</label>
        <g:field type="number" required="" min="0" value="1" name="client.externalId"/>
      </div>
    </div>
  </div>    
</g:form>

我的 admin.js 看起来像这样

$(function()
  $('.create-client').on('click', function(e)
    e.preventDefault();
    $('.create-client').addClass('active');
    $('main-content').load('_client.gsp');
  );
);

【问题讨论】:

【参考方案1】:

首先,创建一个控制器,为 AJAX 调用提供模板内容:

class AdminController 
    def client() 
        render template: 'client',
            model: [...],
            contentType: 'text/plain'

    

这会将_client.gsp 的内容呈现为字符串,并以text/plain 内容类型返回它。在您的 javascript 中,使用 load 调用它:

$('.main-content').load('/myapp/admin/client');

【讨论】:

谢谢你,这正是我所需要的。我现在被困在另一个问题上。如果出现错误,我将如何处理在部分加载的情况下重定向回此视图? 看到这个答案:***.com/questions/12377142/… 我想念那个措辞。如果我以部分形式提交表单并且它无效(在控制器中保存失败)我如何重新呈现部分加载的页面及其错误。我认为这将是更多的 javascript 工作。我在 grails 中找不到任何可以让我这样做的东西

以上是关于如何将部分模板加载到grails中的div中的主要内容,如果未能解决你的问题,请参考以下文章

Grails 命令对象:如何将 request.JSON 加载到其中?

如何设置 Grails 和 AngularJS 部分模板

Django:将带有表单的alluath模板加载到div加载其他内容

如何将角度5的输入值发送到grails 3?

将 html 文件中的博客文章内容加载到模板中,然后加载到索引文件中

如何将变量的值从一个 div 传递到同一模板中的另一个 div?