Je souhaite inclure la sortie d'une autre servlet dans la réponse en cours.Servlet RequestDispatcher # include et pathInfo
Je peux appeler
request.getRequestDispatcher("/new/url").include(request, response);
et il ne va au servlet droite, mais request.getPathInfo()
, request.getServletPath()
et les amis ne sont pas mis à la nouvelle URL (ils ont encore les anciennes valeurs), de sorte que le servlet ne ne fonctionne pas.
Est-ce censé être comme ça? Et que puis-je faire pour que cela fonctionne?
Je vois. Cela nécessite que le servlet sache qu'il est inclus, ce qui est logique car il n'est pas autorisé à faire certaines choses telles que définir un type de contenu. – Thilo
Merci pour le partage des connaissances, +1. En passant, FYI, j'ai cité les «docs» des deux. Et celui que j'ai cité de la méthode 'forward()' prend tout son sens car il s'agit d'obtenir 'RequestDispatcher'. Maintenant, l'utilisation dépend de ce que l'utilisateur veut, soit invoquer 'forward()' ou 'include()'. –
@Adeel: Désolé, je n'ai pas remarqué ça. Peut-être que cela n'est pas clair dans javadoc, mais cette expression de description forward() signifie que les informations de chemin ne sont pas modifiées quand on appelle 'forward()' sur 'RequestDispatcher' obtenu à partir de' ServletContext.getNamedDispatcher() '. – axtavt