2017-09-29 3 views
4

Je reçois des erreurs en essayant de rafraîchir la forme avec <f:ajax render="@form" listener="#{myBean.onSelectItemChange}" />Ajax ne fonctionne pas dans l'application JSF 2

Le message dans le menu contextuel est « emptyResponse. Une réponse vide a été reçu à partir du serveur Vérifiez les journaux d'erreurs du serveur. "

Dans la console Firefox, l'erreur est « XML Erreur d'analyse: XML ou d'une déclaration de texte non au début de l'entité Emplacement »

Le même code fonctionne bien dans mon environnement local. J'utilise Tomcat 9 dans des environnements locaux et de production. Je ne reçois des erreurs que dans la production.

La page xhtml commence par

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core" 
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 

Lors du rendu, le <!DOCTYPE html> est ajouté automatiquement en haut de la page. J'ai également essayé d'ajouter <?xml version="1.0" encoding="UTF-8"?> en haut de la page.

Edit: Pour être plus précis en cas d'erreur: XML Parsing Error: XML ou d'une déclaration de texte non au début de l'entité Lieu: http://serverIP:8080/app/myPage ligne numéro 2, Colonne 1:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html> 

MISE À JOUR: La réponse XHR ressemble à ceci:

<?xml version='1.0' encoding='UTF-8'?> 
<?xml version='1.0' encoding='UTF-8'?> 
<partial-response> 
... 
</partial-response> 

La première ligne est répétée deux foisEn passant, l'application fonctionne correctement sur mon environnement de développement. J'utilise Tomcat9 sur les ordinateurs de développement (Windows) et de production (Ubuntu).

+0

@mstfdz est droite: ** il n'y a pas ** _double quotes_ dans le code '' – Dubois

+2

@Dubois: Désolé, c'est un non-sens total. Vérifiez [Spécification XML] (https://www.w3.org/TR/REC-xml/) vous-même. – BalusC

+0

hors sujet: ne pas mélanger jsf 2.2 et pré-2.2 espaces de noms (ou peut-être c'est sur le sujet) – Kukeltje

Répondre

3

Si les journaux du client ce erreur, le côté serveur XHTML n'est pas à blâmer ou seulement indirectement. Regarder ce que la vraie réponse est dans les outils de développement de browswer montrera la vraie cause. Après avoir fait cela, il est devenu évident qu'il y avait un prologue «en double». En utilisant cela dans un titre (ou dans une recherche dans google) aurait probablement pointé vers un Q/A existant dans Stackoverflow et faisant effectivement cette Q/A une copie de celui-ci: Ajax update has no effect, Firefox errors: XML or text declaration not at start of entity

Je poste toujours cela comme un répondre pour deux raisons:

  • pour montrer aux autres la pertinence de « l'analyse des causes profondes »
  • il ne peut pas être marqué comme duplicata en raison de la prime sur elle
-2

Essayez de trouver l'identifiant absolu de votre formulaire dans le navigateur en utilisant « Vérifiez les éléments » changer la valeur render à cet ID
vous aurez quelque chose comme ceci:

<f:ajax render="element:element1" listener="#{myBean.onSelectItemChange}"></f:ajax> 
+0

Prenez soin d'expliquer pourquoi vous pensez que cela est nécessaire? – Kukeltje

+2

Merci @AyoubM, essayé mais ça ne marche toujours pas – justasd