cancel
Showing results for 
Search instead for 
Did you mean: 

[Résolu] Problème de validation d'un formulaire sur chrome

dguezou
Champ in-the-making
Champ in-the-making
Bonjour,

J'ai un problème lors de la validation d'un formulaire. Ce problème apparaît sur Chrome et IE mais pas sur Firefox.

L'erreur provient lors de l'appel du webscript formprocessor (form.post.desc.xml) :

Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot call method "toString" of null (webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresc
o/repository/forms/form.post.js#96)


J'ai pu remarquer que dans Chrome et ie, "on passe par" le javascript form.post.js. Or dans firefox, on passe dans form.post.json.js. L'appel à ce webscript se fait de la même manière, dans forms-runtime.js à la ligne (838) :

Alfresco.util.Ajax.jsonRequest(config);

La requète est bien exécutée avec le "content-type" égal à "application/json", j'ai aussi comparé les header entre chrome et firefox mais je ne vois aucune différence.

Je ne pense pas que cela ait un rapport mais le formulaire est affiché dans une boite de dialogue.

J'espère avoir été assez claire, sinon n'hésitez pas à me demander des précisions !
2 REPLIES 2

dguezou
Champ in-the-making
Champ in-the-making
J'ai réussi à trouver la cause du problème :

En faitdans le header il y avait une petit différence :
le Content-Type dans chrome vallait : application/json, application/json (en double) et cela lui posait problème.

J'ai, pour arranger ce problème, modifié le fichier alfresco.js en commentant la ligne suivante :
//YAHOO.util.Connect.initHeader("Content-Type", c.requestContentType);


Cela marche très bien sur chrome et firefox, mais j'ai un peu peur sur des effets de bord qu'il pourrait y avoir en faisant ceci. Est-ce que vous auriez une meilleure solution à me proposer ?



EDIT :
Au lieu de commenter j'ai trouvé deux autres solutions qui me paraissent un peu mieux mais sans être vraiment convaincu

//passage  du 3e paramètre à true qui indique (si je ne me trompe pas) que la valeur défini est celle par défaut qui est envoyé à chaque transaction
YAHOO.util.Connect.initHeader("Content-Type", c.requestContentType,true);

ou


YAHOO.util.Connect.resetDefaultHeaders(); // permet de faire un reset des headers définis par défaut
YAHOO.util.Connect.initHeader("Content-Type", c.requestContentType);

la première des 2 me parait la meilleure solution

Merci d'avance

dguezou
Champ in-the-making
Champ in-the-making
J'ai trouvé le problème, c'était dû à une modification à un autre endroit dans le code que l'on avait modifié où le header par défaut était modifié.