Grails und Ajax

Groovy Builder und die Grails render()-Methode

Grails unterstützt ohne weitere Installation drei wichtige Groovy Builder, welche für Ajax besonders wichtig sind. Es handelt sich um die XML und HTML Markup Builder von Groovy und den Grails-spezifischen JSON Builder. Wie es die Namen schon verraten, können mithilfe dieser Builder sehr einfach Daten im HTML-, XML- oder JSON-Format dargestellt werden. Die Beispiele in Listing 2 bis 4 verdeutlichen dies.

Listing 2
//HMTL
def testHTML =
{
render {
        div(id:"meineId")  {
                strong "meinText"
        }
}
}
//
meinText
Listing 3
//XML
def testXML =
{
render(contentType:"text/xml") {
    numbers {
         for(n in [1,2,3,4]) {
            if (n 
1234
*/
Listing 4
//JSON
def testJSON =
{
render(builder:"json") {
        msg(type:"DefaultError",desc:"Number was not assigned", code:"500")
}
}
// {"msg":{"type":"DefaultError","desc":"Number was not assigned","code":"500"}}

Das XML-Beispiel in Listing 2 zeigt auch, wie sie innerhalb des Builder-Codes Schleifen und if-/else-Statements verwenden können. Dies kann auch auf den Markup Builder sowie den JSON Builder angewandt werden. Wenn Sie die Wahl zwischen XML und JSON haben, sollten Sie sich für JSON entscheiden, da in diesem Fall die Antwort kürzer ausfällt als mit XML. Darüber hinaus kann JSON direkt von JavaScript ohne zusätzliche Konvertierung weiterverarbeitet werden. Um mit den drei Buildern „warm“ zu werden, sollten Sie etwas damit experimentieren. Sie können den obigen Code einfach in einen eigenen Controller kopieren, er enthält keinerlei Referenzen auf Domain-Modelle etc.

Ajax Plug-ins

Neben sämtlichen bereits angesprochenen Features arbeitet die Grails Community ständig an Plug-ins für das Grails-Framework, welche Ihnen bei der Arbeit mit Ajax das Leben einfacher machen können. Die für Ajax besonders relevanten Plug-ins sind das DWR Plug-in (Aufruf von remote-Methoden in JavaBeans auf dem Server aus JavaScript vom Client heraus), das Converters Plug-in (Serialisierung von Domain-Objekten nach JSON/XML) und das OpenLaszlo Plug-in (u.a. Scaffolding von OpenLaszlo Views für bestehende Domain-Klassen).

Fazit

Wenn es um Ajax geht, dann ist das Grails Web-Framework ganz vorne mit dabei. Die zahlreichen Features wie die render()-Methode oder diverse Builder zur Generierung von spezifischen Antworten ersparen im täglichen Umgang mit Ajax sehr viel Arbeit. Die verfügbaren Grails Ajax-Tags erleichtern den Einstieg in das Thema Ajax, und die Wahl zwischen den drei populären Ajax Toolkits Prototype/Scriptaculous, Yahoo! UI und Dojo gibt Ihnen die Freiheit, das beste Toolkit für Ihren Anwendungsfall zu wählen.

Sven Haiges arbeitet als Technical Yahoo! Engineer in Sunnyvale (CA), USA. Sein Interesse gilt derzeit vor allem dem breiten Thema Web 2, (mobile) Ajax und diversen Scriptsprachen wie Ruby, Groovy und den damit verbundenen Web-Frameworks wie Ruby on Rails und Grails.

Zu dem Artikel können Sie hier den Quellcode als zip-Datei downloaden.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.