2010-01-08 4 views
7

WebSphere consigne le message d'avertissement "SRTServletRes W AVERTISSEMENT: impossible de définir l'en-tête. Réponse déjà validée "pour une demande JSP. J'ai besoin des en-têtes de respone plus tard dans mon code. J'ai fait quelques recherches et j'ai compris que Servlet essaie d'envoyer plus de données au flux de sortie, mais le flux est déjà engagé. Je n'ai pas compris pourquoi cela se produisait uniquement pour cette JSP particulière, car ce code Servlet fonctionne bien pour les autres JSP. Cette page n'est pas redirigée et je reçois la réponse sans en-tête de réponse. Lorsqu'une réponse est validée, cela signifie qu'au moins les en-têtes ont déjà été envoyés au client.Impossible de définir l'en-tête dans JSP. Réponse déjà validée

Répondre

20

Vous ne pouvez pas définir/modifier les en-têtes lorsque la réponse est déjà validée, car il est trop tard.

Une réponse sera constituée dès lors que l'un ou plusieurs des conditions suivantes est remplie:

  • HttpServletResponse#sendRedirect() a été appelé.
  • Plus de 2 Ko ont déjà été écrits dans la sortie de réponse, soit par Servlet ou JSP.
  • Plus de 0K mais moins de 2K a été écrit etflush() a été invoqué sur le flux de sortie de réponse, soit par Servlet ou JSP.

La limite de mémoire tampon de 2 Ko est configurable dans la configuration du serveur d'applications.

Vous devez réorganiser la logique de code afin qu'elle ne définisse que les en-têtes avant la réponse est validée. Vous devez jamais définir/modifier les en-têtes de réponse en utilisant scriptlets à l'intérieur/à mi-chemin d'une JSP. Vous devez uniquement le faire dans un Filter avant de continuer la chaîne, ou dans un contrôleur de page Servlet avant d'envoyer la demande. Veillez également à ce qu'aucun d'entre eux n'ait été appelé par un fichier d'inclusion JSP.

Questions connexes