SlideShare a Scribd company logo
1 of 38
GRAILS & DOJO
About Sven ,[object Object],[object Object],[object Object],[object Object]
Goals ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Getting Started
Getting startedā€¦ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
How to add Dojo to your pages ,[object Object],[object Object],[object Object],<script type=&quot;text/javascript&quot; djConfig=&quot;isDebug: true&quot; src=&quot;http://o.aolcdn.com/dojo/0.9.0/dojo/dojo.xd.js&quot;></script> <script type=&quot;text/javascript&quot;> dojo.addOnLoad(function(){ alert('loaded, all good'); }); </script>
Understanding Grails & AJAX ,[object Object],[object Object],[object Object],[object Object]
Dojo is more than AJAX ,[object Object],[object Object],[object Object],[object Object]
Learning Path ,[object Object],[object Object],[object Object],[object Object]
Grails AJAX Tags
Ā 
remoteLink ,[object Object],<div id=&quot;message&quot;></div> <g:remoteLink  action=&quot;remoteLinkCallId&quot;  id=&quot;1&quot;  update=&quot;message&quot;> AJAX Call, id=1 </g:remoteLink> def remoteLinkCallId = {  log.debug(&quot;${actionName} Action called with ${params.id}&quot;) render &quot;You called ${actionName} in ${controllerName} with   ${params.id}&quot; }
formRemote ,[object Object],<g:formRemote  url=&quot;[action:'formRemoteCall']&quot;  name=&quot;form2&quot;  update=&quot;message&quot;  onLoading=&quot;toggleSpinner(true)&quot;  onLoaded=&quot;toggleSpinner(false)&quot; > User: <input name=&quot;user&quot; type=&quot;text&quot;></input> <input type=&quot;submit&quot; value=&quot;formRemote Call&quot;></input> </g:formRemote>  def formRemoteCall = {  log.debug(&quot;${actionName} Action called with ${params.user}&quot;) render &quot;You called ${actionName} in ${controllerName} with     ${params.user}&quot; }
submitToRemote ,[object Object],<g:javascript library=&quot;dojo&quot; /> <g:javascript> dojo.require(&quot;dojo.io.IframeIO&quot;); </g:javascript> <g:form  url=&quot;[action:'submitToRemoteCall']&quot; id=&quot;form2&quot;  enctype=&quot;multipart/form-data&quot;> File: <input name=&quot;someFile&quot; type=&quot;file&quot;></input> <g:submitToRemote  value=&quot;Submit Upload&quot;  name=&quot;form2&quot;  action=&quot;submitToRemoteUpload&quot;  update=&quot;[success:'message',failure:'error']&quot; /> </g:form>
submitToRemote ,[object Object],def submitToRemoteUpload =  { def f = request.getFile('someFile')   if(f.empty) { render &quot;No file!&quot; } else { def fileName = f.getOriginalFilename() render(text:&quot;<html><body><textarea>You called ${actionName} in ${controllerName} with file ${fileName}</textarea></body></html>&quot;, contentType:&quot;text/html&quot;, encoding:&quot;UTF-8&quot;) }   }
remoteField ,[object Object],<g:remoteField before=&quot;if (this.value.length < 3) return false;&quot;  action=&quot;quickSearch&quot; update=&quot;tableContent&quot; name=&quot;search&quot;  paramName=&quot;search&quot;/> <span id=&quot;spinner&quot; style=&quot;display:none;&quot;> <img src=&quot;${createLinkTo(dir:'images',file:'spinner_mac.gif')}&quot; alt=&quot;Spinner&quot; /> </span> def  quickSearch = { def  devices = Device.findAllByModelLike(&quot;%${params.search}%&quot;,  [max:20,  sort :&quot;model&quot;, order:'asc']) render(template:'tableContent', model:[deviceList:devices]) }
remoteField list.gsp <table> <thead> <tr> ... </tr> </thead> <tbody id=&quot;tableContent&quot;> <g:each in=&quot;${deviceList}&quot; var=&quot;device&quot;>   ... </g:each> </tbody> </table> _tableContent.gsp <g:each in=&quot;${deviceList}&quot; var=&quot;device&quot;> <tr>   <td>${device.id}</td>   ... </tr> </g:each>
onXXX Methods
Grails AJAX Tags ,[object Object],[object Object],[object Object],[object Object],[object Object]
Grails AJAX Tags do not provide ,[object Object],[object Object]
Grails AJAX support
Render() is your best friend ,[object Object],[object Object],render &quot;This is easy.ā€œ render &quot;{font:{id:10, name:'Arial'}}&quot; ,[object Object],render(template:'podcastList', model:[podcasts:Podcast. findAll ()])
Rendering JSON ,[object Object],[object Object],[object Object],<?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?><linked-hash-map> <entry> <string>identifier</string> <string>id</string> </entry> <entry> <string>items</string> <list> <linked-hash-map> <entry> <string>id</string> <long>1</long> </entry> <entry> <string>url</string> <string>http://url1/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>2</long> </entry> <entry> <string>url</string> <string>http://url2/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>3</long> </entry> <entry> <string>url</string> <string>http://url3/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>4</long> </entry> <entry> <string>url</string> <string>http://url4/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>5</long> </entry> <entry> <string>url</string> <string>http://url5/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>6</long> </entry> <entry> <string>url</string> <string>http://url6/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>7</long> </entry> <entry> <string>url</string> <string>http://url7/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>8</long> </entry> <entry> <string>url</string> <string>http://url8/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>9</long> </entry> <entry> <string>url</string> <string>http://url9/rss</string> </entry> </linked-hash-map> <linked-hash-map> <entry> <string>id</string> <long>10</long> </entry> <entry> <string>url</string> <string>http://url10/rss</string> </entry> </linked-hash-map> </list> </entry> </linked-hash-map>  {&quot;identifier&quot;:&quot;id&quot;,&quot;items&quot;:[{&quot;id&quot;:1,&quot;url&quot;:&quot;http://url1/rss&quot;},{&quot;id&quot;:2,&quot;url&quot;:&quot;http://url2/rss&quot;},{&quot;id&quot;:3,&quot;url&quot;:&quot;http://url3/rss&quot;},{&quot;id&quot;:4,&quot;url&quot;:&quot;http://url4/rss&quot;},{&quot;id&quot;:5,&quot;url&quot;:&quot;http://url5/rss&quot;},{&quot;id&quot;:6,&quot;url&quot;:&quot;http://url6/rss&quot;},{&quot;id&quot;:7,&quot;url&quot;:&quot;http://url7/rss&quot;},{&quot;id&quot;:8,&quot;url&quot;:&quot;http://url8/rss&quot;},{&quot;id&quot;:9,&quot;url&quot;:&quot;http://url9/rss&quot;},{&quot;id&quot;:10,&quot;url&quot;:&quot;http://url10/rss&quot;}]} XML or JSON?
JSON is easy to read, too { &quot;identifier&quot;:&quot;id&quot;, &quot;items&quot;: [ { &quot;id&quot;:1, &quot;url&quot;:&quot;http://url1/rss&quot; }, { &quot;id&quot;:2, &quot;url&quot;:&quot;http://url2/rss&quot; }, { &quot;id&quot;:3, &quot;url&quot;:&quot;http://url3/rss&quot; }, { &quot;id&quot;:4, &quot;url&quot;:&quot;http://url4/rss&quot; } ] }
JSON is easy to create, too ,[object Object],render(builder:'json')  { element(imagePath: &quot; /app/myimage.png&quot;) } {&quot;element&quot;:{&quot;imagePath&quot;:&quot;/app/myimage.png&quot;}} dojo.io.iframe.send( { url: &quot;/some/url&quot;, form: dojo.byId('formImage'), handleAs: &quot; json &quot;, method: &quot;POST&quot;, handle: function(response, ioArgs)  { var fileName = response.elementImage.fileName; } });
Using converter & Render ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],{ &quot;id&quot;:1, &quot;class&quot;:&quot;Podcast&quot;, &quot;author&quot;:&quot;Author1&quot;, &quot;feedURL&quot;:&quot;http://url1/rss&quot; }
Special Dojo Widgets &  Grails
Data-hungry widgets ,[object Object],[object Object],[object Object],[object Object],[object Object]
Dojo ComboBox & Grails ,[object Object],<div dojoType=&quot;dojo.data.ItemFileReadStore&quot; jsId=&quot;stateStore&quot; url=&quot;<g:createLink controller=&quot;widget&quot; action=&quot;comboboxConverterDataā€œ />&quot;> </div> <input  dojoType=&quot;dijit.form.ComboBox&quot; store=&quot;stateStore&quot; hasDownArrow=&quot;false&quot; value=&quot;&quot; searchAttr=&quot;url&quot; name=ā€œfeed&quot; onChange=&quot;setValue&quot; />
Dojo ComboBox & Grails ,[object Object],def comboboxConverterData = { def items = [] def podcasts = Podcast.findAll(); podcasts.each { podcast ->  items << [id:podcast.id, url:podcast.feedURL] } def json = [identifier:&quot;id&quot;, items: items] render json as JSON } ,[object Object]
Dojo FilterSelect & Grails ,[object Object],<div dojoType=&quot;dojo.data.ItemFileReadStore&quot; jsId=&quot;feedStore&quot; url=&quot;<g:createLink controller=&quot;widget&quot; action=&quot;filterSelectData&quot; />&quot;> </div> <input dojoType=&quot;dijit.form.FilteringSelect&quot; id=&quot;chooser&quot; store=&quot;feedStore&quot; searchAttr=&quot;url&quot; name=&quot;feed&quot; autocomplete=&quot;true&quot; pageSize=&quot;5&quot; />
Dojo FilterSelect & Grails ,[object Object],def filterSelectData = {  def items = [] def podcasts = Podcast.findAll(); podcasts.each { podcast ->  items << [id:podcast.id, url:podcast.feedURL] } def json = [identifier:&quot;id&quot;, items: items] render json as JSON } ,[object Object]
Dojo Tree & Grails ,[object Object],<div dojoType=&quot;dojo.data.ItemFileReadStore&quot; jsId=&quot;treeStore&quot; url=&quot;<g:createLink controller=&quot;widget&quot; action=&quot;treeData&quot; />&quot;> </div> <div  dojoType=&quot;dijit.Tree&quot;  store=&quot;treeStore&quot;  childrenAttr=&quot;children&quot;  labelAttr=&quot;url&quot;> </div>
Dojo Tree & Grails ,[object Object],def treeData = {  def items = [] def children = [] (1..3).each { children  << [_reference:&quot;${it}&quot;] } def podcasts = Podcast.findAll(); podcasts.each { podcast ->  items << [id:podcast.id, url:podcast.feedURL,  children:children ] } def json = [ identifier:&quot;id&quot; , label:'url', items: items] render json as JSON }
Tipps & Resources
Resources ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Resources ,[object Object],[object Object],[object Object],[object Object],[object Object]
THX Y IM/SKYPE hansamann

More Related Content

What's hot

Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
Dave Bouwman
Ā 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
Julien Lecomte
Ā 
New Browsers
New BrowsersNew Browsers
New Browsers
Rafael Mumme
Ā 

What's hot (20)

WordPress and Ajax
WordPress and AjaxWordPress and Ajax
WordPress and Ajax
Ā 
Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09
Ā 
Findability Bliss Through Web Standards
Findability Bliss Through Web StandardsFindability Bliss Through Web Standards
Findability Bliss Through Web Standards
Ā 
DevDays09 Internet Explorer 8
DevDays09 Internet Explorer 8DevDays09 Internet Explorer 8
DevDays09 Internet Explorer 8
Ā 
Fast by Default
Fast by DefaultFast by Default
Fast by Default
Ā 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical Writing
Ā 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work for you
Ā 
Fast Loading JavaScript
Fast Loading JavaScriptFast Loading JavaScript
Fast Loading JavaScript
Ā 
Challenges of building a search engine like web rendering service
Challenges of building a search engine like web rendering serviceChallenges of building a search engine like web rendering service
Challenges of building a search engine like web rendering service
Ā 
Intro to html5 Boilerplate
Intro to html5 BoilerplateIntro to html5 Boilerplate
Intro to html5 Boilerplate
Ā 
ąøŖąø›ąø£ąø“ąø‡ą¹€ąøŸąø£ąø”ą¹€ąø§ąø“ąø£ą¹Œąø„4.1
ąøŖąø›ąø£ąø“ąø‡ą¹€ąøŸąø£ąø”ą¹€ąø§ąø“ąø£ą¹Œąø„4.1ąøŖąø›ąø£ąø“ąø‡ą¹€ąøŸąø£ąø”ą¹€ąø§ąø“ąø£ą¹Œąø„4.1
ąøŖąø›ąø£ąø“ąø‡ą¹€ąøŸąø£ąø”ą¹€ąø§ąø“ąø£ą¹Œąø„4.1
Ā 
Internet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian ThilmanyInternet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian Thilmany
Ā 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
Ā 
Don't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web ApplicationsDon't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web Applications
Ā 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
Ā 
Web Performance & Search Engines - A look beyond rankings
Web Performance & Search Engines - A look beyond rankingsWeb Performance & Search Engines - A look beyond rankings
Web Performance & Search Engines - A look beyond rankings
Ā 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
Ā 
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and BeyondWebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
Ā 
New Browsers
New BrowsersNew Browsers
New Browsers
Ā 
LinkedIn Platform at LeWeb 2010
LinkedIn Platform at LeWeb 2010LinkedIn Platform at LeWeb 2010
LinkedIn Platform at LeWeb 2010
Ā 

Viewers also liked

Packing Newsletter October 07
Packing Newsletter October 07Packing Newsletter October 07
Packing Newsletter October 07
frisard
Ā 
Planejamento de Marketing
Planejamento de MarketingPlanejamento de Marketing
Planejamento de Marketing
Cristiane Thiel
Ā 
S O N E T O[ B O B L A U R A]
S O N E T O[ B O B  L A U R A]S O N E T O[ B O B  L A U R A]
S O N E T O[ B O B L A U R A]
guest2c857d
Ā 
LIBRO DE LAS PREGUNTAS
LIBRO DE LAS PREGUNTASLIBRO DE LAS PREGUNTAS
LIBRO DE LAS PREGUNTAS
andreitaprofesora
Ā 
Projekt Hardware - Speicher
Projekt Hardware - SpeicherProjekt Hardware - Speicher
Projekt Hardware - Speicher
C.Ronaldo_91
Ā 
Nostalgicemails
NostalgicemailsNostalgicemails
Nostalgicemails
guestff5a8a
Ā 
Samenvatting In Beelden
Samenvatting In BeeldenSamenvatting In Beelden
Samenvatting In Beelden
Timo Kouwenhoven
Ā 
ApresentaĆ§Ć£o Aquarius
ApresentaĆ§Ć£o AquariusApresentaĆ§Ć£o Aquarius
ApresentaĆ§Ć£o Aquarius
Laura Baptista
Ā 

Viewers also liked (20)

Blues Music.It Does Not Get Any Better Than This
Blues Music.It Does Not Get Any Better Than ThisBlues Music.It Does Not Get Any Better Than This
Blues Music.It Does Not Get Any Better Than This
Ā 
Accidentes
AccidentesAccidentes
Accidentes
Ā 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
Ā 
Activos Intangibles
Activos IntangiblesActivos Intangibles
Activos Intangibles
Ā 
Packing Newsletter October 07
Packing Newsletter October 07Packing Newsletter October 07
Packing Newsletter October 07
Ā 
Planejamento de Marketing
Planejamento de MarketingPlanejamento de Marketing
Planejamento de Marketing
Ā 
Plano de Marketing
Plano de MarketingPlano de Marketing
Plano de Marketing
Ā 
S O N E T O[ B O B L A U R A]
S O N E T O[ B O B  L A U R A]S O N E T O[ B O B  L A U R A]
S O N E T O[ B O B L A U R A]
Ā 
LIBRO DE LAS PREGUNTAS
LIBRO DE LAS PREGUNTASLIBRO DE LAS PREGUNTAS
LIBRO DE LAS PREGUNTAS
Ā 
Tutorial Blog En Wordpress 2
Tutorial Blog En Wordpress 2Tutorial Blog En Wordpress 2
Tutorial Blog En Wordpress 2
Ā 
Tutorial Blog En Wordpress 3
Tutorial Blog En Wordpress 3Tutorial Blog En Wordpress 3
Tutorial Blog En Wordpress 3
Ā 
Tutorial Blog En Wordpress 1
Tutorial Blog En Wordpress 1Tutorial Blog En Wordpress 1
Tutorial Blog En Wordpress 1
Ā 
CIPA Overview
CIPA OverviewCIPA Overview
CIPA Overview
Ā 
Projekt Hardware - Speicher
Projekt Hardware - SpeicherProjekt Hardware - Speicher
Projekt Hardware - Speicher
Ā 
Emprendimiento E InnovaciĆ³n Digital
Emprendimiento E InnovaciĆ³n DigitalEmprendimiento E InnovaciĆ³n Digital
Emprendimiento E InnovaciĆ³n Digital
Ā 
Tutorial Blog En Wordpress 4
Tutorial Blog En Wordpress 4Tutorial Blog En Wordpress 4
Tutorial Blog En Wordpress 4
Ā 
Nostalgicemails
NostalgicemailsNostalgicemails
Nostalgicemails
Ā 
11 De Septiembre
11 De Septiembre11 De Septiembre
11 De Septiembre
Ā 
Samenvatting In Beelden
Samenvatting In BeeldenSamenvatting In Beelden
Samenvatting In Beelden
Ā 
ApresentaĆ§Ć£o Aquarius
ApresentaĆ§Ć£o AquariusApresentaĆ§Ć£o Aquarius
ApresentaĆ§Ć£o Aquarius
Ā 

Similar to Grails and Dojo

GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
marpierc
Ā 
Ajax
AjaxAjax
Ajax
wangjiaz
Ā 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
James Williams
Ā 
What I brought back from Austin
What I brought back from AustinWhat I brought back from Austin
What I brought back from Austin
Lisa Adkins
Ā 

Similar to Grails and Dojo (20)

GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
Ā 
Developing and testing ajax components
Developing and testing ajax componentsDeveloping and testing ajax components
Developing and testing ajax components
Ā 
my test
my testmy test
my test
Ā 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
Ā 
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group PresentationActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
Ā 
Client-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesClient-side JavaScript Vulnerabilities
Client-side JavaScript Vulnerabilities
Ā 
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Ā 
Ajax
AjaxAjax
Ajax
Ā 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Ā 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
Ā 
jQuery Presentation - Refresh Events
jQuery Presentation - Refresh EventsjQuery Presentation - Refresh Events
jQuery Presentation - Refresh Events
Ā 
Eugene Andruszczenko: jQuery
Eugene Andruszczenko: jQueryEugene Andruszczenko: jQuery
Eugene Andruszczenko: jQuery
Ā 
Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)
Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)
Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)
Ā 
What I brought back from Austin
What I brought back from AustinWhat I brought back from Austin
What I brought back from Austin
Ā 
HTML5 Overview
HTML5 OverviewHTML5 Overview
HTML5 Overview
Ā 
Real-World AJAX with ASP.NET
Real-World AJAX with ASP.NETReal-World AJAX with ASP.NET
Real-World AJAX with ASP.NET
Ā 
&lt;img src="xss.com">
&lt;img src="xss.com">&lt;img src="xss.com">
&lt;img src="xss.com">
Ā 
Fav
FavFav
Fav
Ā 
Jsp
JspJsp
Jsp
Ā 
Intro to jQuery
Intro to jQueryIntro to jQuery
Intro to jQuery
Ā 

More from Sven Haiges

CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on Android
Sven Haiges
Ā 
Android UI
Android UIAndroid UI
Android UI
Sven Haiges
Ā 

More from Sven Haiges (11)

NFC and Commerce combined
NFC and Commerce combinedNFC and Commerce combined
NFC and Commerce combined
Ā 
End to End Realtime Communication using Mobiel Devices and the Web
End to End Realtime Communication using Mobiel Devices and the WebEnd to End Realtime Communication using Mobiel Devices and the Web
End to End Realtime Communication using Mobiel Devices and the Web
Ā 
NFC Android Introduction
NFC Android IntroductionNFC Android Introduction
NFC Android Introduction
Ā 
Gesture-controlled web-apps
Gesture-controlled web-appsGesture-controlled web-apps
Gesture-controlled web-apps
Ā 
CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on Android
Ā 
NFC on Android - Near Field Communication
NFC on Android - Near Field CommunicationNFC on Android - Near Field Communication
NFC on Android - Near Field Communication
Ā 
Android UI
Android UIAndroid UI
Android UI
Ā 
Html5
Html5Html5
Html5
Ā 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon Valley
Ā 
Grails 0.3-SNAPSHOT Presentation WJAX 2006 English
Grails 0.3-SNAPSHOT Presentation WJAX 2006 EnglishGrails 0.3-SNAPSHOT Presentation WJAX 2006 English
Grails 0.3-SNAPSHOT Presentation WJAX 2006 English
Ā 
Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006
Ā 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
Ā 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Ā 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Ā 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Ā 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Ā 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Ā 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Ā 

Grails and Dojo

  • 2.
  • 3.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 11. Ā 
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. remoteField list.gsp <table> <thead> <tr> ... </tr> </thead> <tbody id=&quot;tableContent&quot;> <g:each in=&quot;${deviceList}&quot; var=&quot;device&quot;> ... </g:each> </tbody> </table> _tableContent.gsp <g:each in=&quot;${deviceList}&quot; var=&quot;device&quot;> <tr> <td>${device.id}</td> ... </tr> </g:each>
  • 19.
  • 20.
  • 22.
  • 23.
  • 24. JSON is easy to read, too { &quot;identifier&quot;:&quot;id&quot;, &quot;items&quot;: [ { &quot;id&quot;:1, &quot;url&quot;:&quot;http://url1/rss&quot; }, { &quot;id&quot;:2, &quot;url&quot;:&quot;http://url2/rss&quot; }, { &quot;id&quot;:3, &quot;url&quot;:&quot;http://url3/rss&quot; }, { &quot;id&quot;:4, &quot;url&quot;:&quot;http://url4/rss&quot; } ] }
  • 25.
  • 26.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 36.
  • 37.
  • 38. THX Y IM/SKYPE hansamann