PDA

Bekijk Volledige Versie : Java Servlet + Filter



Tjerk Wolterink
24/02/06, 03:00
Ik heb een Filter die de response door een xsl
transformatie gooit.

De xml die de servlet genereert wordt zo omgezet in
html.

Een probleem is dat ik in de servlet op een plaats het volgende aanroep:

response.sendError(response.SC_NOT_FOUND, "Page was not found");

Nu gaat de filter hieroverheen en dat gaat niet werken.

Wat ik wil is dat de filter er niet overheengaat als
ik de sendError methode van het response object gebruik..

Maar hoe doe ik dat?

B.v.d.

David Baakman
25/02/06, 03:00
Tjerk Wolterink wrote...
> Ik heb een Filter die de response door een xsl
> transformatie gooit.
>
> De xml die de servlet genereert wordt zo omgezet in
> html.
>
> Een probleem is dat ik in de servlet op een plaats het volgende aanroep:
>
> response.sendError(response.SC_NOT_FOUND, "Page was not found");
>
> Nu gaat de filter hieroverheen en dat gaat niet werken.
>
> Wat ik wil is dat de filter er niet overheengaat als
> ik de sendError methode van het response object gebruik..
>
> Maar hoe doe ik dat?

Filter niet laten uitvoeren bij een bepaalde response code gaat niet. Op
zich ook wel logisch: de methode doFilter wordt aangeroepen voordat
servlet.service() aangeroepen wordt.

Echter is je functionele probleem (het gaat er niet om dat je filter
niet uitgevoerd wordt, maar dat je transformatie niet uitgevoerd wordt)
wel op te lossen: maak een WrappedResponse aan, geef die in je doFilter
mee aan je chain.doFilter() aanroep. Override in je WrappedResponse de
methodes sendError(..) waarbij je een boolean op true of false zet, en
zet je XSL transformatie binnen een if-statement dat checkt op die
boolean.

Groeten,
David

Tjerk Wolterink
26/02/06, 03:00
David Baakman wrote:
> Tjerk Wolterink wrote...
>
>>Ik heb een Filter die de response door een xsl
>>transformatie gooit.
>>
>>De xml die de servlet genereert wordt zo omgezet in
>>html.
>>
>>Een probleem is dat ik in de servlet op een plaats het volgende aanroep:
>>
>>response.sendError(response.SC_NOT_FOUND, "Page was not found");
>>
>>Nu gaat de filter hieroverheen en dat gaat niet werken.
>>
>>Wat ik wil is dat de filter er niet overheengaat als
>>ik de sendError methode van het response object gebruik..
>>
>>Maar hoe doe ik dat?
>
>
> Filter niet laten uitvoeren bij een bepaalde response code gaat niet. Op
> zich ook wel logisch: de methode doFilter wordt aangeroepen voordat
> servlet.service() aangeroepen wordt.
>
> Echter is je functionele probleem (het gaat er niet om dat je filter
> niet uitgevoerd wordt, maar dat je transformatie niet uitgevoerd wordt)
> wel op te lossen: maak een WrappedResponse aan, geef die in je doFilter
> mee aan je chain.doFilter() aanroep. Override in je WrappedResponse de
> methodes sendError(..) waarbij je een boolean op true of false zet, en
> zet je XSL transformatie binnen een if-statement dat checkt op die
> boolean.
>
> Groeten,
> David


Kijk dat zijn oplossing waar we wat aan hebben.

David bedankt.