JSF – javax.faces.ViewState – id rendering

JSF Le problème de l’id rendering
Florent TRIPIERMis à jour le 31 Janv 2014

Le problème de lid

Lorsque lon crée un formulaire JSF (<h:form>), le moteur de rendu crée bien sûr une balise HTMLHTML (HyperText Markup Language) est un langage permettant de décrire le découpage d'une page web. , mais il ajoute également plusieurs de type hidden. Entre autre, le javax.faces.ViewState qui permet de récupérer létat de vos composants dune requête HTTP à lautre. Le problème vient du fait que Mojarra, limplémentation de référence, a la fâcheuse manie dajouter un id sur cet input avec la valeur statique « javax.faces.ViewState ».

La difficulté apparaît lorsque lon a plusieurs formulaires sur une même page JSF : on se retrouve alors avec deux input de type hidden avec le même id sur la page HTML finale. En conséquence, cet attribut qui nest daucune utilité provoque une erreur lorsque lon passe son code au validateur W3C, chose que lon peut être amené à faire dans une démarche daccessibilité et/ou de référencement.

La solution : context param

Heureusement une solution existe : comme toujours, JSF propose une correction de bug sous la forme dun paramétrage. Vous avez donc un spécifique pour cette situation, à insérer simplement dans votre fichier web.xml :

{{< highlight java >}} < context-param>

La valeur « true » ajoute lid, « false » le supprime.