Petit exemple :
- On définit une méthode d'accès à une liste de personnes avec les annotation @At et @Get dans un POJO :
@At("/persons")
public class PersonPage {
private List<Person> persons;
@Get
public void get() {
this.persons = personsDao.getPersons();
}
}
- On accède aux données de ce POJO via le template html :
- ${person.name}
@Repeat(items=persons, var="person")
L'annotation @Repeat permet d'itérer sur la collection de personnes pour afficher leur nom, en affichant autant de balises <li> qu'il y a d'éléments.
D'autres annotations sont disponibles, comme @ShowIf qui permet de définir une collection pour afficher ou nom un composant (en fait une balise et son contenu). Pour des besoins spécifiques il sera également possible de développer ses propres annotations, ou "bricks" (un peu comme pour les tag libs JSP).
Dans le sens inverse, pour envoyer des données depuis un formulaire vers un POJO, on utilise une annotation POST :
Et on "binde" les champs simplement en définissant un nom correspondant aux champs des objets Java :
L'objet newPerson sera automatiquement rempli avec les valeurs du formulaire html (il faut bien sur définir les getters et setters pour cet objet).
On pourra ainsi récupérer la liste des personnes d'une ville spécifique avec le code suivant dans le template :
Dans le sens inverse, pour envoyer des données depuis un formulaire vers un POJO, on utilise une annotation POST :
private Person newPerson;
@Post
public void postPerson() {
personDAO.save(newPerson);
}
Et on "binde" les champs simplement en définissant un nom correspondant aux champs des objets Java :
<input name="newPerson.name" type="text">
L'objet newPerson sera automatiquement rempli avec les valeurs du formulaire html (il faut bien sur définir les getters et setters pour cet objet).
Pour aller plus loin
- Ajouter des paramètres pour accéder aux ressources
Sitebricks tire parti du style Restful en proposant un moyen plus élaboré de récupérer des ressources:
@At("/persons/town/:town")
public class PersonPage{
@Get
public void get(@Named("town") String town) {
personDao.gePersonstByTown(town);
}
On pourra ainsi récupérer la liste des personnes d'une ville spécifique avec le code suivant dans le template :
- ${person.name}
@Repeat(items=persons/town/Paris, var="person")
- Réutilisation de composants
Sitebricks possède également un mécanisme permettant de faciliter la réutilisation de composants. Un fragment de page ou "brick" peut être annoté comme "imbriquable" dans une autre page en ajoutant l'annotation "@EmbedAs" dans le POJO correspondant au fragement.
Par exemple ce fragment affiche un message :
@EmbedAs"HelloBrick"
public class Hello{
private String message;
...
}
$message
L'insertion se fait alors simplement dans le code html en rappelant le fragment par une annotation du même nom :
...
@HelloBrick(message="coucou")
Si cette introduction vous a mis l'eau à la bouche, vous pouvez suivre le projet sur cette page : http://code.google.com/p/google-sitebricks/
Vous aurez ainsi toutes les informations nécessaires pour mettre en place et configurer le framework.
En conclusion je trouve ce framework assez sympathique, on sent que l'accent a été mis sur la légereté et la simplicité. De plus, l'orientation Restful du framework est une approche qui me parait originale et dans l'air du temps.
Et vous qu'en pensez vous? Sitebricks pourra-t-il s'imposer et remplacer le vieillissant Struts ou encore JSF dans le coeur des développeurs?



