2010-12-02 49 views
0

Je veux mettre en œuvre dans mon jsf applicationJSF: Comment capturer réponse qui est envoyée au client

Scénario une sorte d'aide-fonctionnalité:

Lorsque les utilisateurs de mon application ont des problèmes, ils envoie moi des captures d'écran. Ceux-ci sont de mauvaise qualité et je ne peux pas voir l'information que je veux.

Mon idée: J'ajoute un "help" -Button dans ma page jsf. Lorsque ce bouton est pressé, je stocke la réponse de rendu (html résultant) qui est envoyé au client sur mon hd.

Maintenant, je peux ouvrir ce fichier html généré et peut voir les informations que je veux (par exemple les valeurs de inputfield)

Maintenant, ma question.

Comment puis-je effectuer cette tâche?

J'ai essayé PhaseListener et en utilisant

PrintWriter w = new PrintWriter(System.out); DebugUtil.simplePrintTree(FacesContext.getCurrentInstance().getViewRoot(),"",w);

mais cela est juste l'arborescence des composants et non le code html résultant

En d'autres termes: je veux capturer la sortie de FacesContext.getExternalContext () .getResponse() qui est envoyé au client

des idées?

+0

duplication possible de [Contenu dynamique généré par Capture côté serveur] (http://stackoverflow.com/questions/1963158/capture-generated-dynamic-content-at-server-side) – BalusC

Répondre

2

Utilisez un Filter autour du FacesServlet. Il définit un HttpServletResponseWrapper et à son tour faire ses enveloppes de retour getOutputStream() et getWriter() des objets originaux. Dans les wrappers, en plus de déléguer à l'implémentation d'origine, stockez les données écrites ailleurs.

+0

merci pour l'indice – wutzebaer