21
décembre
2007
Tips : Composant JSF et Facelets
décembre
2007
Un article de Hikage
Pas de commentaires
Je suis nouveau sur Facelet, et je suis tombé sur un « problème ».
Je devais créer un composant JSF, jusque la pas de soucis, j’en avais déjà fait auparavant.
Je commence donc :
- Création du composant
- Création du renderer
- Création du Tag
- Ajout dans faces-config des composants
- Création de la taglib
Bref, je déplois une page de test, et pas de bol, ca ne marche pas..
Après quelques recherches, je découvre qu’avec Facelet, le « Tag » n’est pas utilisé, et donc la méthode setProperties non plus. Le problème qui en survient, est que les expressions languages sont directement passée via setValueBinding au composant, et non plus « traitée » par le Tag.
Il faut donc faire une vérification au niveau du composant, dans les accesseurs, pour vérifier si une ValueBinding n’existe pas pour la propriété :
public String getActionName() {
if (this.actionName != null)
return this.actionName;
ValueBinding vb = this.getValueBinding("actionName");
if (vb == null)
return null;
return (String) vb.getValue(context);
}
if (this.actionName != null)
return this.actionName;
ValueBinding vb = this.getValueBinding("actionName");
if (vb == null)
return null;
return (String) vb.getValue(context);
}