Avec la sortie officielle des spécifications JSF 2.0 comme partie de la norme Java EE 6, les implémentations classiques de JSF commencent à l’adopter.
Richfaces avait annoncé le premier son intention de suivre la totalité de la norme JSF 2.0 dans la version 4.0.
Mais, devancent le lancement official de la version 4.0, la version 3.3.3 RC1 , de Richfaces supporte une partie de la spécification JSF 2.0.
Il s’agit d’un signale fort concernant la concurrence acharnée dans le domaine (IceFaces, …)
Richfaces 3.3.2 : une version aboutie
Je reconnais que la version 3.3.2 de Richfaces, couplée avec Facelets 1.1, est une implémentation aboutie de JSF 1.2. J’ai pu vérifier ce constat, récemment, dans un projet exploitant Richfaces et des composants flex : Aucun besoin de javaScript bien que l’interface soit très dynamique et l’usage d’ajax généralisé.
Rappelions que la version 3 de Richfaces supporte essentiellement les spécifications 1.2 de JSF.
Richfaces 3.3.3 & JSF 2.0 :Limitations
Attention : On pourra lire les avertissement suivants sur le wiki de Richfaces : http://community.jboss.org/wiki/RichFaces333andJSF20
Limitations List
RichFaces 3.3.3 does not support JSF 2 built-in facelets (VDL)
Facelets 1.1.15 should still be used because of dependencies in RichFaces from the Tag Handlers classes.
JSF 2 native ajax problems
f:ajax
As RichFaces 3.3.3 does not supports VDL - it does not support any new tags like f:ajax, h:outputScript and so on.
JSF ajax java script api
As JSF 2 currently does not provide a mechanism of cleaning Script objects for components removed by ajax - huge memory leaks could arise on updates RF components via JSF native ajax.
JSR-303 support
JSF 2 does not registering Bean validators while runned in compatibility mode (with VDL turned off and external facelets used.). This is not RichFaces 3.3.3 limitation but should be considered during porting applications to JSF 2.
https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1518 - issue at mojarra tracker.
Annotations Scanning
During initialization JSF 2 ConfigManager checks for faces-config presense and looks if it's version is equals to 2.0. So in order to get JSF annotations works with your existent application you should:
- have no faces-config in application
- or just version of application config should be changed to 2.0