2009-12-10 3 views
4

MyFaces Orchestra ajoute un ?conversationContext=x à chaque ressource d'une page. Depuis que je ne suis pas en utilisant le champ de conversation pour la partie publique de mon projet (uniquement pour la partie admin), je voudrais vous débarrasser de ce paramètre pour deux raisons:Suppression du paramètre GET "conversationContext" de MyFaces Orchestra à partir de ressources statiques (css, images)

  • il se casse la mise en cache du navigateur de ressources statiques
  • il est moche :)

Je vais maintenant jeter un oeil à code source de l'Orchestre, et peut-être quelque chose de by-pass, mais il serait mieux s'il y a une option pour cela, je suis pas de

Répondre

1

La réponse à cette question est simple, et en même temps un peu d'une solution de contournement. MyFaces orchestra utilise un wrapper autour de l'original HttpServletResponse afin de coder le paramètre contesationContext.

Il y a deux options d'utilisation d'Orchestra - avec un intercepteur (JSF) et un Filter. Les deux essayent d'envelopper la réponse, si elle n'est pas déjà emballée. Donc, si l'orchestre Filter et l'intercepteur sont utilisés, le Filter vient le plus rapidement, encapsule l'objet de réponse, et définit un attribut dans la requête, qui indique à l'intercepteur, qu'il ne doit pas encapsuler de nouveau la réponse. Le Filter peut être configuré pour correspondre à un certain modèle d'URL si conversationContext doit être ajouté. Cependant, pour mes besoins, ce modèle de recherche était trop simple, j'ai donc fait mon propre filtre à la place. Ainsi, afin de dire l'intercepteur de ne pas envelopper la réponse, tout ce qui doit être fait est la suivante:

httpRequest.setAttribute(
       RequestParameterServletFilter.REQUEST_PARAM_FILTER_CALLED, 
       Boolean.TRUE); 
+0

Je suis en train de mettre en œuvre votre solution. J'ai déclaré mon propre filtre dans web.xml et il est appelé correctement. Cependant, il semble que lorsque le filtre est appelé, le 'conversationContext' a déjà été appliqué à la demande par une autre classe. Je ne sais pas quelle classe. Comment avez-vous résolu cela? – flash

+0

J'ai, il y a 3 ans. Les choses ont probablement changé. – Bozho

Questions connexes