Ca y’est ! J’ai réalisé mon premier CRUD avec Wicket

Enfin ! Hier soir, j’ai pu crér mon premier cRUD avec Wicket en suivant un excellent tutoriel posté dans TheServerSide. J’ai trouvé cet article excellent pour de nombreuses raisons:

[Suite:]

  • Il couvre plusieurs aspects de Wicket: Héritage de Markup, Création de Composants, Communication entre pages (passages de paramètres, etc.), etc.
  • Un Excellent usage des models: jusque là, je croyais que je m’en sors très bien avec un simple PropertyModel, mais c’était sans compter les best-practicies (LoadableDetachableModel, CompoundPropertyModel, etc.)
  • Il montre (sommairement) l’intégration des différentes couches de l’application
  • Il montre comment utiliser Spring (mais là, j’aurais aimé voir comment faire avec les annotations.
  • Calir, précis, détaillé, du bonheur
  • Obiwan Kenobi :D

Manquait juste l’Ajax, mais là, je peux me baser sur l’article de Zedros 😉 (merci à lui).

Pour ceux qui ne le savent pas encore, jusque là, j’étais un fidèle JSFien, tout content avec facelets, Spring et Richfaces … mais là, depuis hier soir, je crois que la donne va tout simplement changer.
Wicket est tout simplement puissant, mais alors vraiment puissant ! Du moment qu’on maîtrise ses (satanés) models, qu’on se familiarise un peu avec les composants standard et qu’on se fixe de bonnes habitudes quant aux classes anonymes/internes, vous pouvez exprimer vos souhaits avec rien de moins que le langage Java le tout-puissant.

A titre d’exemple: le choix des composants à redessiner après une requête Ajax. Avec RichFaces (ou plutôt Ajax4JSF) qui soit dit en passant rend ajax un simple jeux d’enfants, il faut spécifier d’avance quels composants seront redessinées (via l’attribut reRender), tandis qu’avec Wicket on les spécifies dans le traitement invoqué côté serveur … époustouflant. Ceci peut être simulé en faisant un binding entre reRender et un champ String d’un managed-bean, mais c’est ce qu’on appèle un quirk … et comme l’a dit quelqu’un (Christian sell):

you can work around any quirk in any framework. Or just use a decent one

traduction:

Vous pouvez contourner toute limitation dans tout framework. Ou juste utiliser un bon framework !

Il y’a aussi la simplicité déconcertante du développement des composants personnalisés … là, je suis sidéré: j’en ai crée un dès mon premier vrai test de Wicket … à comparer avec JSF que j’utilise dans le boulot et depuis mon PFE sans jamais avoir osé en développer un ;

Bref, ce qui me séduit dans Wicket c’est son approche extrêmement uniforme et harmonisée. Tout est Java, le reste n’est qu’ombre et poussière ! Euh, du simple HTML je veux dire.

La seule chose qui dérange dans Wicket c’est la prolifération des classes anonymes et internes … et là, je crois que les closures peuvent vraiment apporter une solution à ceci.

J’aimerais bien aussi voir une sorte de Builder qui permet de simplifier la construction programmatique de l’IHM.

En ce qui concerne Spring, je ne suis pas encore suffisament informé pour en juger, mais je trouve que l’intégration de Spring avec JSF est beaucoup plus transparent qu’avec Wicket. J’aime pas du tout l’annotation spéciale @SpringBean au lieu de l’annotation standard @Resource que j’utilise avec Spring 2.5.

Voilou voili ! Je me considère désormais comme un converti, et à part les projets sur lesquels je travaille actuellement au boulot (en JSF, trop tard pour changer), mes prochains projets seront certainement développés en Wicket (a moins que le boss s’y oppose, mais j’ai vraiment la chance de travailler dans un environnement ou on peut (nous les développeurs) exprimer/défendre/imposer nos choix.

To be continued.

—-

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: