J'utilise actuellement Jackson 1.4.2 et tente de désérialiser les valeurs code
(identifiants uniques pour les informations de type) qui sont transmises de notre interface utilisateur aux contrôleurs Java (servlets).Jackson ne reconnaît pas l'annotation @JsonCreator
Il existe plusieurs types (par exemple ABCType
, XYZType
, etc.) que tous les étendent à partir d'une AbstractType
, mais chaque type de béton présente une méthode de fabrication statique qui prend en tant que paramètre unique, un identifiant unique, et renvoie l'objet de type (nom, types associés, description, acronymes valides, etc.) représentés par cet identifiant. La méthode statique dans chaque type de béton (par exemple XYZType
) est annotées avec @JsonCreator
:
@JsonCreator
public static XYZType getInstance(String code) {
.....
}
Le problème que je vois bien est une exception lancée par le mappeur de Jackson essaie de désérialiser le JSON à ces types:
causée par: org.codehaus.jackson.map.JsonMappingException: Aucun constructeur par défaut trouvé pour le type [type simple, classe com.company.type.XYZtype]: instanciation de l'objet JSON.
Qu'est-ce que je manque ici de l'annotation @JsonCreator
aux méthodes statiques d'usine (ou est-il à voir avec Jackson aux prises avec les 1.4.2 types de béton s'étendant à partir d'un AbstractType
?)?