controller

controller

Parancoe: i controller

Posted by gtrev on Lun, 01/10/2007 - 22:47 in

Scrivo qui un breve tutorial su come definire un controller per Parancoe. A breve una versione in inglese sul sito del progetto (Lucio te lo prometto ;) )

Update 2007-10-02 12:55:00: If you want the English version of this tutorial follow this link

Definizione

Per definire un controller in Parancoe i passi da compiere sono due:

  1. scrivere la classe del controller
  2. definire in parancoe-servlet qual è il package nel quale il controller si trova.

Supponiamo di dover creare un controller che gestisca le chiamate alle url del tipo "/admin/*.html". Definiamo la classe AdminController in questo modo:

package org.parancoe.basicWebApp.controllers;

public abstract class AdminController extends BaseMultiActionController {
    ...
}

BaseMultiActionController è una classe di Parancoe che estende MultiActionController aggiungendo utilità per il logging e la gestione degli errori.

Una volta definito il controller, per agganciarlo al corretto url è sufficiente mettere l'annotazione @UrlMapping("mia_url") in questo modo:

package org.parancoe.basicWebApp.controllers;

@UrlMapping("/admin/*.html")
public abstract class AdminController extends BaseMultiActionController {
    ...
}

Autodiscovery

A questo punto è sufficiente inserire la seguente riga nel file parancoe-servlet.xml:

<define-controllers
basePackage="org.parancoe.basicWebApp.controllers"
parent="abstractController" />

Parancoe si occuperà di andare ad analizzare i controller definiti in basePackage e a caricarli nel contesto di Spring. Inoltre registrerà il mapping definito dall'annotazione.

Le annotazioni

Le annotazioni che si possono utilizzare per definire il mapping sono tre:

  1. @UrlMapping: riceve una stringa che contiene la definizione di un'url;
  2. @MultiUrlMapping: premette di definire più mapping per lo stesso controller
  3. @DefaultUrlMapping: questa annotazione non prevede alcun parametro e serve ad indicare a Parancoe di usare il metodo di default per la definizione del mapping.

Per quanto riguarda l'ultima annotazione, il metodo di default definisce il mapping a partire dal nome del controller: così AdminController mapperà su /admin/*.html, mentre MioFantasticoController su /mio/fantastico/*.html.

(e adesso forse è più chiaro a cosa servisse il metodo uncamelize che avevo descritto qualche tempo fa).

Alcune note finali

E' ancora possibile definire i propri controller all'interno del file parancoe-servlet.xml.

Si deve però avere l'accortezza di usare come id il nome completamente qualificato del controller, così da sovrascrivere la definizione costruita dall'autodiscovery.

Happy parancoing!

Syndicate content