lundi 23 juillet 2012

Pourquoi mes expressions <%= variable %> ne fonctionne pas dans mon taglib ?

Récemment, je devais utiliser un taglib développé en interne de type :

<t:bouton onClick="verifierFormulaire(<%= index%>)" texte="Valider" />

Ce bouton est intégré à un iterator.
Je souhaitais donc passer à une fonction JavaScript l'index de l'itérateur.

Seulement voila, ça ne fonctionnait pas.

J'ai donc vérifier les paramètres du taglib :
<tag>
    <name>bouton</name>
    <tagclass>xxxxxxxxxxxxxx.taglib.BoutonTag</tagclass>
    <bodycontent>empty</bodycontent>

    <attribute>
        <name>onClick</name>
        <required>false</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
</tag>
J'avais bien le paramètre RtExprValue à true qui indique que l'attribut peut résulter d'une expression JSP.

Ce n'est malheureusement pas là le problème.

En effet, le problème vient du fait qu'il faut que tout le contenu de onClick doit être valorisé :
<t:bouton onClick="<%= "verifierFormulaire(" + index + ");" + %>" texte="Valider" />

Voilà donc le problème réglé.

Si ce n'est pas votre problème peut-être que ce blog peut y répondre : http://blog.lecacheur.com/2006/04/27/des-attributs-dynamiques-dans-les-taglibs/

Aucun commentaire:

Enregistrer un commentaire