[richfaces-issues] [JBoss JIRA] Updated: (RF-1360) BaseFilter fails to recognize non-faces resource requests, invoking BaseXMLFilter.doXmlFilter()
Nick Belaevski (JIRA)
jira-events at lists.jboss.org
Mon Nov 19 07:17:19 EST 2007
[ http://jira.jboss.com/jira/browse/RF-1360?page=all ]
Nick Belaevski updated RF-1360:
-------------------------------
Fix Version/s: 3.2.0
(was: 3.1.3)
Affects Version/s: 3.1.3
Assignee: Anton Belevich
> BaseFilter fails to recognize non-faces resource requests, invoking BaseXMLFilter.doXmlFilter()
> -----------------------------------------------------------------------------------------------
>
> Key: RF-1360
> URL: http://jira.jboss.com/jira/browse/RF-1360
> Project: RichFaces
> Issue Type: Bug
> Affects Versions: 3.1.3
> Environment: Richfaces 3.1.3 (cvs), Seam 2.0.1 (cvs), Jboss 4.2.2
> Reporter: Stuart Robertson
> Assigned To: Anton Belevich
> Priority: Critical
> Fix For: 3.2.0
>
>
> When servicing a non-jsf request, in this case to stream a pdf down to the user, the BaseFilter is mangling the contentType by appending an incorrect char encoding onto the (correct) content type.
> 13:58:28,313 INFO [FileServlet] Streaming file About Stu.pdf, contentType application/pdf and size 94171 to browser...
> 13:58:28,371 ERROR [STDERR] java.lang.Exception: contentType set to application/pdf;charset=ISO-8859-1
> 13:58:28,371 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl$1.setContentType(SeamFilter.java:66)
> 13:58:28,371 ERROR [STDERR] at javax.servlet.ServletResponseWrapper.setContentType(ServletResponseWrapper.java:130)
> 13:58:28,371 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl$1.setContentType(SeamFilter.java:65)
> 13:58:28,371 ERROR [STDERR] at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:260)
> 13:58:28,371 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
> 13:58:28,371 ERROR [STDERR] at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
> And in BaseFilter, doXmlFilter is always invoked because the if condition is for "true". Here is the code from BaseFilter starting on line 271:
> // check ajax request parameter
> // TODO - check for JSF page.
> if (true) {
> if (log.isDebugEnabled()) {
> log.debug(Messages
> .getMessage(Messages.FILTER_XML_OUTPUT));
> }
> // Execute the rest of the filter chain, including the
> // JSP
> xmlFilter.doXmlFilter(chain, httpServletRequest,
> httpServletResponse);
> doXmlFilter() appends an incorrect charType to a resource mimetype (in this case "application/pdf"). The correct behavior, if I read the code correctly, would be to invoke chain.doFilter() for resource requests.
> I think the key is in the TODO. The code needs to recognize when the request is outside of faces, and not interfere with the response headers at that point.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the richfaces-issues
mailing list