grails_Grails AJAX示例

grails

早期,Grails的新手会遇到缺少该框架附带的工作示例的情况。 示例和文档的好地方包括Grails文档和博客。

Ajax是Grails内置支持的功能之一。 一旦人们“熟悉”了Grails的基础知识,他们通常就希望转向Ajax等更有趣的功能。 这通常需要搜索网络,查找示例和/或仔细阅读文档。 我经历了这个过程,发现其他人可能会从Grails中的一组简短的ajax示例中受益。 我创建了一个小应用程序,该应用程序演示了一些Ajax功能并提供了该应用程序以供有兴趣的人下载。 (请参阅底部下载

信息)

示例应用程序使用以下每个:

  • FormRemote
  • 远程链接
  • SubmitToRemote
  • 遥控功能
  • 远程字段

一般步骤

  • 选择您的javascript库-我的示例中使用的原型。 还显示了一些Ajax事件注册。
function showSpinner(visible) {
         $('spinner').style.display = visible ? "inline" : "none";
     }
     Ajax.Responders.register({
     onLoading: function() {
           showSpinner(true);
     },
     onComplete: function() {
     if(!Ajax.activeRequestCount) showSpinner(false);
     }
   });
    • 使用所需的任何代码更新您的控制器-以下是我的整个BookController
package ajax

class BookController {

     def scaffold = true

  def showEditAjax = {
   render (view:'editAjax', model:[bookInstance:Book.get(params.id)])
  }

  def showListSelect = {
   render (view:'listSelect', model:[bookInstanceList:Book.list()])
  }

  def showTitleSearch = {
   render (view:'titleSearchAjax')
  }

  def showRemoteLink = {
   render (view:'remoteLink', model:[bookInstanceList:Book.list()])
  }

  def showDetails = {
   render(template:'bookDetails', model:[bookInstance:Book.get(params.id)])
  }

  def showSearch = {
   render (view:'searchAjax')
  }

  def String wrapSearchParm(value) {
   '%'+value+'%'
  }

  def searchTitle = {
   def list = Book.findAllByTitleIlike(wrapSearchParm(params.searchvalue))
   render(template:'searchResults', model:[searchresults:list])
  }

  def search = {
   def list
   if (params.publisher && params.title)
    list = Book.findAllByTitleIlikeAndPublisherIlike(wrapSearchParm(params.title), wrapSearchParm(params.publisher))
   else if (params.publisher)
    list = Book.findAllByPublisherIlike(wrapSearchParm(params.publisher))
      else if (params.title)
       list = Book.findAllByTitleIlike(wrapSearchParm(params.title))

   render(template:'searchResults', model:[searchresults:list])
  }

  def listByPublisher = {
   def list
   if (params.filter.equals("All"))
    list = Book.list()
    else
      list = Book.findAllByPublisher(params.filter)

   render(template:'searchResults', model:[searchresults:list])
  }

 def update = {
  def bookInstance = Book.get( params.id )
  if(bookInstance) {
   bookInstance.properties = params
   if(!bookInstance.hasErrors() && bookInstance.save()) {
    render "
 Book ${params.title} updated with Ajax using FormRemote"
   }
   else {
    render(view:'edit',model:[bookInstance:bookInstance])
   }
  }
  else {
   flash.message = "Book not found with id ${params.id}"
   redirect(action:edit,id:params.id)
  }

  }

}
  • 创建/更新视图–查看下面的屏幕截图和/或下载应用程序

大多数示例都是相当简单的,不需要太多解释。 它们可能不是伟大的“现实世界”示例,但其目的是为某人提供一个可行的示例。

FormRemote

formRemote标签创建一个表单标签,该标签使用远程uri执行ajax调用。 在这种情况下,我略微修改了默认生成的edit.gsp,将form标记更改为formRemote标记,并添加了div以显示编辑结果。 下面的屏幕快照显示了以下结果:首先单击Form Remote导航菜单按钮,更改“ Grails in Action”书中的页数,然后按屏幕底部的Update按钮。

远程链接

单击“ RemoteLink”标记会创建一个调用远程功能的链接。 在示例应用程序中,我显示了书名列表,书名是一个链接。 单击标题会在屏幕底部显示书的详细信息。

<g:each in="${bookInstanceList}" status="i" var="bookInstance">
    <g:remotelink action="showDetails" id="${bookInstance.id}" oncomplete="showSpinner(false);" onloading="showSpinner(true);" update="bookDetails">${fieldValue(bean: bookInstance, field: "title")}</g:remotelink>   
</g:each>

SubmitToRemote

SubmitToRemote标记创建一个按钮,该按钮将周围的表单作为远程Ajax调用提交,从而将字段序列化为参数。 在示例应用程序中,我为“标题”和“发布者”创建了搜索字段。 搜索按钮是使用SubmitToRemote标签库创建的,以使用Ajax提交搜索参数。

<g:form action="search"><table><tbody>
<tr class="prop">             <td class="name" valign="top">Title:</td>             <td class="value" valign="top"><input name="title" value="${title}" type="text"></td>          </tr>
<tr class="prop">             <td class="name" valign="top">Publisher:</td>             <td class="value" valign="top"><input name="publisher" value="${publisher}" type="text"></td>          </tr>
</tbody>      </table><g:submittoremote oncomplete="showSpinner(false)" onloading="showSpinner(true)" update="searchresults" url="[controller:'book', action:'search']" value="Search">
</g:submittoremote></g:form>

遥控功能

示例应用程序使用RemoteFunction标签库创建分配给onChange DOM事件的远程javascript函数。 当用户选择或更改“出版者”下拉列表中的值时,将调用远程功能,并且屏幕的下半部分显示由所选出版者出版的书籍。

远程字段

该示例应用程序使用RemoteField taglib来动态搜索Book标题,类似于Google Instant。 在“标题搜索”字段中键入值时,屏幕将返回搜索结果。 在这种情况下,控制器代码用通配符(%)包装搜索参数以搜索数据库,并返回所有要显示的匹配项。

<div id="searchbox">Title Search:
<g:remotefield name="search" oncomplete="showSpinner(false);" onloading="showSpinner(true);" paramname="searchvalue" update="searchresults" url="[controller:'book', action:'searchTitle']">
</g:remotefield></div>

遇到的问题

  • 我遇到了尝试使微调器正确显示的问题,直到我在StackOverflow上找到了该条目,条目显示了如何注册Ajax事件。 当在同一盒子上本地运行时,这发生得非常快,因此,如果要查看微调框,则确实需要注意屏幕的右上角。
  • 由于语法问题,我也遇到了RemoteFunction的问题。 习惯了标签库之后,我在应该更新语法“ mydiv”的情况下使用update =” mydiv”设置了update参数。 这没有标记为错误。 控制器被调用了,它从未更新目标div!

资料下载

放在一起很有趣。 希望对您有所帮助!

参考: Grails AJAX示例,来自我们的JCG合作伙伴 Mike Miller,来自Scratching我的编程痒博客。

翻译自: https://www.javacodegeeks.com/2013/05/grails-ajax-examples.html

grails

Allegro如何改变线宽操作指导 用Allegro做pcb设计的时候,改变走线线宽是非常常用的功能,如下图。线宽目前是12mil,需要把线宽改成15mil。如何改变线宽操作指导。 阅读详情

相关推荐

精通Grails 之用 JSON 和Ajax 实现异步Grails(pdf电子书)

精通Grails 之用 JSON 和Ajax 实现异步Grails。书中包含了全部代码。免费下载

Grails AJAX示例

早期,Grails的新手会遇到缺少该框架附带的工作示例的情况。 示例和文档的好地方包括Grails文档和博客。 AjaxGrails内置支持的功能之一。 一旦人们“熟悉”了Grails的基础知识,他们通常就希望转向Ajax等更有趣的功能。 这通常需要搜索网络,查找示例和/或仔细阅读文档。 我经历了这个过程,发现其他人可能会从Grails中的一组简短的ajax示例中受益。 我创建了一个小...

249

grails 使用ajax的例子

介绍了使用ajax的几个常用标签,欢迎志同道合的朋友来看看

GrailsAJAX使用

AJAX是一种很好的技术,Grails中的使用需要GSP、控制器两方面的配合: 首先,在GSP中设置一个区域,用于显示——关键是设置ID。比如: <div id="systemMenuEditDiv"> </div> 然后,GSP中要设置 <g:remoteLink action="createSystemMenu" ...

weixin_38169786的博客 190

grailsajax书写

gsp中js为 $.post("modifyRight", //用../..路径不正确 {"repoName":repoName}, function(data,state){ alert("state="+state) alert(data.result.repoRight); },"json"); 或者 $.ajax({ url: 'm

zyzn1425077119的博客 429

Groovy轻松入门——Grails实战之Ajax

Ajax虽是“旧酒装新瓶”,但其威力着实不小。近两年来可谓红透半边天,它之所以能为大众接受,其中一个很大的原因就是提高了用户浏览体验,能更逼真的模拟出GUI界面。好了,Ajax的益处就说到这里,下面让我们看下Grails是如何帮助我们方便地应用Ajax的:如果您对下面说设计的内容有点不解,那么您可以先看一下 Groovy轻松入门——Grails实战基础篇,然后开始我们的Ajax之旅。1,

Kc 944

GRAILS AJAX

此文来转砸,非本人所写,原文地址:http://belmount.iteye.com/blog/165737 一个生于2005年以后的网站,如果没有AJAX的元素在里面,只能说这个站点已经out了。作为一个在AJAX大行其道的年代里诞生的快速开发框架,GRAILSAJAX应用开发的支持那是相当的到位。至少,在我看来,除了updater有时候跳到其它地方去,其他的简直是完美。

robbenren的专栏 748

精通 Grails: 用 JSON 和 Ajax 实现异步 Grails

本文讨论 Grails 对于其互补技术 JSON 和 Ajax 的支持。在前几期的精通 Grails系列文章中,JSON 和 Ajax 都扮演支援者的角色,而这一次,它们担任主角。您将使用内置的 Prototype 库和 Grails<formRemote>标记发出一个 Ajax 请求。您还将看到一些关于提供本地 JSON 和通过 Web 动态获得 JSON 的例子...

dianzongfan5428的博客 257

grails json_掌握GrailsJSON和Ajax异步Grails

存档日期:2019年5月13日 | 首次发布:2008年11月18日 JavaScript对象表示法(JSON)和异步JavaScript + XML(Ajax)是Web 2.0开发的基础。 在Mastering Grails系列的这一期中,作者Scott Davis演示了Web框架中固有的JSON和Ajax功能。 此内容不再被更新或维护。 全文以PDF格式“按原样”提供。 随着技术的...

cusi77914的博客 182

Grails使用Ajax

grails中很好的集成了Ajax,这里介绍利用Jquery的 getJSON方法进行Ajax异步传输。 使用步骤: 引入Jquery(.gsp 页面中引入 jquery.js) <script type="text/javascript" src="${resource(dir: 'assets/js', file: 'jquery.js')}">&lt...

weixin_34336292的博客 151

grails ajax

It is javascript and ajax using in grails, it is very useful

GrailsAjax

grails支持ajax,目前可以使用三种库: prototype,yahoo,dojo,当然也可以自己在taglib中添加支持其他的库的功能. 在grails中创建一个ajax调用还是比较简单的,首先创建一个Controller:DemoCnotroller.groovy [code="java"] class DemoController { def ajaxCaller = { ...

likehs的专栏 148

grails ajax 级联,Grails的更新值形式使用Ajax(Grails updating values in form

我已经写了使用Grails 2.5.0的例子。 这个例子使用GSP模板呈现在AJAX调用改变价格,看下面的详细信息。创建一个名为_price.gsp一个GSP模板模板是一个GSP文件必须以下划线开始,不具备HTML和BODY标签。 在这种情况下,GSP仅仅是下面的代码:15 ${price}16 ${price}17 ${price}创建一个名为ajaxSize.gsp GSP这是主要的GSP...

weixin_36333534的博客 241

ajaxgrails后台的搭配

前台ajax写法 后台grails写法

二枫的代码小窝 898

例子描述:grails jquery 实现ajax

功能:后台有个的对象Notes,在页面上有个列表,列表最后一列做一个开关,修改notes一个属性(ispublic), 页面gsp代码:将id通过js函数update用ajax方式提交到后台,切换ispublic状态        function update(id){ $.getJSON("updatePub", { id: id, now: (new Date()

Zeeeitch 2383

grails g:formRemote 与 ajax 对比

g:formRemote name="from_form" url="[namespace:'admin',controller:'cert', action:'revoke']" onSuccess="window.location.reload()"> class="btn" data-dismiss="modal" aria-hidden="true">取消 g:hidde

二枫的代码小窝 903

Grails WEB层 AJAX

  6.7 Ajax Ajax代表异步Javascript与XML,它是转向富web应用程序的驱动力. 这些类型的应用程序,通常更适合于像Ruby和 Groovy语言所写的敏捷,动态框架,Grails通过它的Ajax标签库提供支持构建Ajax应用程序. 它们完整的列表可以参看标签库参考. 6.7.1 用Prototype实现Ajax Grails默认装载Protot...

justJavaC的专栏 250

Grails国际化实例

Grails实现国际化(中英文切换) 在grails-app/i18n分别配置英文(messages.properties),中文:(messages_zh_CN.properties) 英文配置messages.properties user.username=Username user.password=Password username.tip=Enter username pass...

Jonny的博客 451

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统-深度学习算法应用(含pytho、JS工程源码)+数据集+模型

1.本项目基于Keras框架,引入CNN进行模型训练,采用Dropout梯度下降算法,按比例丢弃部分神经元,同时利用IOT及微信小程序实现自动化远程监测果实成熟度以及移动端实时监测的功能,为果农提供采摘指导,有利于节约劳动力,提高生产效率,提升经济效益。 2.项目运行环境包括:Python环境、TensorFlow环境、JupyterNotebook环境、PyCharm环境、微信开发者工具和OneNET云平台。3.项目包括5个模块:python爬虫及数据预处理、创建模型与编译、模型训练及保存、上传结果、小程序开发。其中定义架构为二个卷积层,在每个卷积层后都连接一个最大池化层及一个全连接层,进行数据的降维。在每个卷积层上都使用L2正则化,并引Dropout和BN算法,用以消除模型的过拟合问题;上传结果有两种方法:一是调用计算机摄像头拍摄图片,将图片信息转换后上传至OneNET;二是将数字图片输入Keras模型中,获取输出后将识别结果上传至OneNET。4.项目博客:https://blog.csdn.net/qq_31136513/article/details/134685676

上一篇: grails 教程_Grails – GORM教程
下一篇: scala集合中加入集合_Scala:集合1
danpie3295
博客等级 码龄9年 13粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值