Taglibraries, Actions und Functions

17. August 2009

Drei Begriffe, die man unbedingt auseinanderhalten sollte. Wieso und warum, das erkläre ich im folgenden Abschnitt! Ich setze in diesem Artikel voraus, dass jeder der ihn liest weiß was HTML und eventuell auch ein DOM-Baum ist.

Also zunächst zu den Taglibraries:

Taglibraries sind prinzipiell kleine Werkzeugkästen mit denen man viel mit wenig Aufwand erreicht. Die so genannten Tags werden in den Webseitenquelltext eingesetzt und zur Laufzeit durch entsprechende Codeabschnitte automatisch ersetzt.
Grails bietet ebenfalls eine Taglibrary an, es handelt sich hierbei um die Groovy Taglibrary. Die Referenz hierzu befindet sich hinter dem folgenden Link.

Hier ein Beispiel:

<select name="dropdown">
  <option>Wert 1</option>
  <option>Wert 1</option>
  <option>Wert 1</option>
  <option>Wert 1</option>
  <option>Wert 1</option>
</select>

Die Beispiel würde eine Auswahlbox erzeugen. Wenn wir das Ganze mit Grails und der GSP Taglibrary machen, dann ensteht folgendes:

class TestController {
  def index = {
    [list:["Wert 1","Wert 2","Wert 3","Wert 4","Wert 5"]]
  }
}
<g:select name="dropdown" from="${list}" />

Das Ergebnis ist am Ende das selbe. Nun fragt Ihr euch, warum sollte ich das denn so umständlich verpacken, wenn ich es auch direkt in HTML schreiben kann. Ganz einfach, denn wir wollen in unserer Applikation in Zukunft auch dynamisch Werte in die Ausgabeseiten generieren lassen. Bisher hat das Grails für uns gemacht, aber wir kommen auch immer wieder an Stellen, an denen wir das selber machen müssen. Schaut einfach mal in die Views, die Grails euch automatisch generiert hat und vergleicht den Inhalt mal mit dem Inhalt zum Link, der zur Groovy Taglibrary führt.

Actions

Actions sind prinzipiell Funktionen, nur dass Sie entweder über die URL, einen Link, oder andere HTML Elemente angesprochen werden. Eine Action wird immer wie folgt deklariert:

def actionName = {
  // hier passiert was
  def neueListe = ['a','b','c']  
 
  // hier wird die Seite zu der Action aufgerufen und die Liste übergeben
  [list:neueListe]
}

Auch hier empfehle ich euch einmal die automatisch generierten Actions in den Controllerklassen euch anzuschauen.

Functions

Functions gibt es prinzipiell überall. in Domain-, Service-, oder Controllerklassen. Functions können Parameter aufnehmen und am Ende etwas zurückgeben. Beides ist optional!

!!Im Gegensatz zu Java ist es in Groovy nicht möglich Functions (Methoden) zu überladen!!

Ein Beispiel für eine Function:

def functionName(parameter1) {
  // hier passiert was
  def neueListe = ['a','b','c',parameter1]  
 
  // hier wird die Seite zu der Action aufgerufen und die Liste übergeben
  return neueListe
}

Functions werden standardmäßig nicht mitgeneriert, aber auch die werden wir später sicherlich auch brauchen.

Das war jetzt mal ein grober Abriss in ein paar verschiedene Begrifflichkeiten. Im nächsten Post werden wir dann endlich mal den Code anfassen.

Eine Reaktion zu “Taglibraries, Actions und Functions”

  1. sehr schönam 18. August 2011 um 17:02 Uhr

    …und wie geth’s weiter? :D

    ich habe alle Artikel mit großem Interesse verfolgt und fände es toll, wenn weitere folgen würden.

    Vielleicht kann Dich dieser Kommentar motivieren, mal wieder einen Beitrag zum thema zu schreiben!
    :-)

    in diesem Sinne: keep up the good work.
    wie der gemeine Amerikaner sagt.
    :D

Trackback URI | Kommentare als RSS

Einen Kommentar schreiben