Cependant, il arrive que nous ayant des surprise, et bien que les getter et setter aient été générés on découvre une erreur. Pourquoi lors l'exécution de l'application, celle-ci ne trouve pas un getter ou un setter d'une des propriété du bean ?
Et là on se rend compte que les spécifications JavaBean sont expliquées dans un petit document PDF de plus de 100 pages. Inévitablement, certaines des règles sont un peu bizarres et autant dire que rare sont les personnes qui ont regardée cette documentation.
Concrètement
Le nom des propriétés commence par une lettre minuscule au début du nom de la propriété, les méthodes JavaBean correspondantes (getter / setter) commences par get et set puis vient ensuite la première lettre en majuscule nom de la propriété.
Dans la plupart des cas cette règle est correcte.
Mais il arrive que l'on à traiter des noms des attributs non standard que certain problèmes se présentent. C'est typiquement le cas si votre code provient d'une génération automatisée de votre code.
Prenons un exemple, une chaîne provenant du C risque de vous produire l'attribut sName. Là, vous générez les méthodes getSName() et setSName(String nom).
Avec cet exemple, les framework tels que Struts, Hibernate, iBatis ou JSF ne seront pas résoudre l'accès à l'attribut sName.
En effet, dans un tel cas le getter et setter doivent avoir la forme suivante: getsName() et setsName(String nom).
Les propriétés et les règles d'accès
Type de la propriété |
Nom de la propriété |
getter | setter |
---|---|---|---|
Double | xcoordinate | public Double getXcoordinate() | public void setXcoordinate(Double value) |
Double | xCoordinate | public Double getxCoordinate() | public void setxCoordinate(Double value) |
Double | XCoordinate | public Double getXCoordinate() | public void setXCoordinate(Double value) |
Double | Xcoordinate | Non autorisé | Non autorisé |
Boolean | student | public Boolean getStudent() | public void setStudent(Boolean value) |
boolean | student | public boolean getStudent()
public boolean isStudent() |
public void setStudent(boolean value) |
Toto[] | toto | public Toto[] getToto()
public Toto getToto(int index) |
public void setToto(Toto[] newArray)
public void setToto(int index, Toto item) |
La Javadoc.
On peut s'inspirer de java.beans.Introspector, une classe permettant de récupérer la liste des propriétés présente sur une classe.
Method getter = new PropertyDescriptor(propertyName, beanClass).getReadMethod();
Voir également:
Aucun commentaire:
Enregistrer un commentaire