I am using Struts 1.2.7
I wrote a Filter which intercepts all requests and applies response headers
(based on some external configuration) to it. All response headers applied
in my Filter other than "Content-Type" were obeyed and sent to the client.
Content-Type was always "text/html".
After a lot of debugging, I realized the value for this particular header
are always getting overwritten in the struts' RequestProcessor class.
Underneath is the method which in my case turned out to be the "culprit"

>
> protected void processContent(HttpServletRequest request,
>                                HttpServletResponse response) {
>     String contentType =
> moduleConfig.getControllerConfig().getContentType();
>     if (contentType != null) {
>        response.setContentType(contentType);
>      }
> }
>

Couple of questions:

   1. Shouldn't this method also check if the response already has a
   contentType header applied or not? Is this a known bug, or am I missing
   something?
   2. I subclassed the RequestProcessor and defined a controller in my
   struts config as <controller processorClass="com.me.MyRequestProcessor"/>.
   The class merely overrides the processContent method to check for an
   existing contentType. Am I doing it correctly, or is there some other way to
   achieve the desired behavour in my case.

Cheers
Avlesh

Reply via email to