J'essaie d'appeler un service web json (dans Liferay), en particulier une méthode pour télécharger un fichier (add-file-entry), dans le params de la requête il y a un objet ServiceContext (https://docs.liferay.com/portal/6.2/javadocs/src-html/com/liferay/portal/service/ServiceContext.html#line.69), j'envoie cet objet param comme une chaîne JSON, et le service web json doit désérialiser la chaîne json dans un objet ServiceContext. ServiceContext a un attribut:Impossible d'invoquer le constructeur no-args pour l'interface java.io.Serializable
private Map<String, Serializable> _attributes;
quand je mets cette carte une entrée par exemple:
servicecontext.setAttribute("fileEntryTypeId", 0);
quand GSON tente de deserialiaze l'objet ServiceContext:
ServiceContext servicecontext = new Gson().fromJson(ServiceContext, ServiceContext.class);
il lance l'exception: Impossible d'appeler le constructeur no-args pour l'interface java.io.Serializable.
S'il vous plaît Aide
Merci pour votre réponse rapide, mais le problème est que je ne peux pas changer la classe ServiceContext, il est défini dans les pots de Liferay que j'utilise. –
Vous n'avez pas besoin de le faire, car en implémentant la classe Serializable vous pouvez le mettre à la place de Serializable –
bien la carte "private Map _attributes;" est un attribut de la classe ServiceContext, donc je pense que si je veux faire votre solution je vais devoir changer la classe ServiceContext, vous ne pensez pas? –