Riot est un framework open source mettant à disposition un CMS (Content Management System). Riot est une surcouche à Spring ajoutant des fonctionnalitées que nous allons passer en revue…

Alors, riot, ca permet de faire quoi ?

1) C’est un CMS très simple à mettre en oeuvre.

En fait Riot propose un service de CRUD (CReate Update Delete) de données pour vos POJO (Plain Old Java Object) via l’utilisation d’un DAO générique (en général, il est très simple de mapper ses POJO sur Hibernate avec riot).

Pour cela il met à votre disposition 3 fichiers :

  • list-config.xml -> Qui configure les listes d’objets de l’interface.
  • form-config.xml -> Qui configure le formulaire d’edition du pojo, et des regles de validations de données.
  • editor-config.xml -> Qui sert de colle entre les deux éléments précédents.

Un article complet va détailler toutes ces fonctionnalitées.

 

 

2) Un système basé sur l’utilisation de modules.

Riot propose de simplifier l’utilisation de modules dans vos templates. Il suffit de définir des zone, et d’indiquer dans la configuration XML spring (soit via la syntaxe compacte riot, soit la syntaxe Spring), quels modules doivent etres empilés.

<template:definition name= »/posts.html » view-name= »default.ftl »>
<template:insert slot= »navigation » url= »/inc/navigation.html » />
<template:insert slot= »content » url= »/inc/all-posts.ftl » />
</template:definition>

3) Un ré-ecriture des URLs très simple.

La ré-écriture d’url tourne souvent à une enorme usine à gaz, alors que c’est en réalité quelque chose de très très simple, et systématique sur un site web.

Riot met donc en oeuvre des variable dans le nommage des bean, afin de mettre des URL « SEO compliantes ».

<bean name= »/some/@{myparam}/page.html » id= »myController » class= »eg.MyController » />

Votre page aura l’url : /some/45/page.html. Pas mal non ? Ligne de code ????? 0!

Pour appeler ce controlleur depuis un template, pas question de codé l’url en dur, utilisez :

<a href= »${common.urlForHandler(‘myController’, myparam)} »>
${category.title}
</a>

4) les controlleurs génériques.

Généralement, une majoritée de pages Web, se contente de recuperer des objets et d’en afficher le contenu. Alors pourquoi utiliser de multiple controlleur pour faire cette opération ?

Riot propose un controlleur générique, suivant la syntaxe :

<generic:controller id= »postDetail » name= »/post-@{id:Long}.html »
view-name= »/inc/post-detail.ftl »>
<generic:hql hql= »from Post p where p.id = :id » />
</generic:controller>

Qui va recuperer l’objet « post » et le passer simplement à la vue.

5) Overriding de configuration Spring

La c’est assez sympa, le principe est de se dire, que parfois, il faut pouvoir redéfinir un élément de configuration, sans redéfinir le bean complet. Pour cela, Riot propose quelques éléments :

<override:properties ref= »someBean »>
<property name= »foo » value= »bar » />
</override:properties>

6) Plus beaucoup d’autres choses…

  • Push-up qui permettent la communication entre « modules »
  • Squelette de base pour débuter un projet.
  • Plus beaucoup d’élements à decouvrir.

Attention tout bonheur à ses petit defauts…

Un gros manque de documentation sur le projet. Mais une communauté plus que réactive.