tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Turner <j...@socialchange.net.au>
Subject [PATCH] Prevent IllegalStateExceptions on <jsp:include>
Date Thu, 11 Oct 2001 00:25:48 GMT
Hi,

As was reported on tomcat-user, the following JSP will throw an
IllegalStateException:

<jsp:include page="/ssi/generic.js" flush="true" /> 

Remy explained why in the following post, and suggested as a fix that
the following be added to the webapp's web.xml:

>   <mime-mapping>
>     <extension>js</extension>
>     <mime-type>text/plain</mime-type>
>   </mime-mapping>


So how about adding this to Catalina's default web.xml, and save many
people from rediscovering this?

The attached patch does this for *.js and *.css, using the official MIME
types rather than text/plain.

thanks,

--Jeff


On Sun, Sep 30, 2001 at 10:42:26AM -0700, Remy Maucherat wrote:
> > This simple tst.jsp page:
> >
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> > <html>
> > <head>
> >  <title>Tst.jsp</title>
> >  <link rel="stylesheet" type="text/css" href="tst.css" >
> >  <jsp:include page="tst.js" flush="true" />
> > </head>
> >
> > <body>
> > <h1>Tst.jsp is OK!</h1>
> > </body>
> > </html>
> >
> > is producing an IllegalStateException on the inclusion of the tst.js file
> > when using
> > the current jakarta-tomcat-4.0 binary release. The same tst.jsp file works
> > fine
> > when using the jakarta-tomcat-3.2.3 release. I don't see that I have much
> > control
> > preventing the call to obtain the request output stream so how do I
> prevent
> > this
> > error, and is this valid behavior? The full exception is given below as
> well
> > as the tst.css and tst.js files.
> 
> The behavior is valid, but is easy to fix.
> Here, the JSP page uses a writer. Since the static page server is also a
> servlet, it can't use an output stream to output the data (you'll get that
> ISE if you call getOutputStream()). It will attempt to use the writer in
> that particular case, but only if the file being included is a text file
> (it's the case here, but there's no MIME type for .js).
> The test used is that the MIME type of the included file has to be starting
> with "text".
> 
> Adding the following mapping in your web.xml should make it work:
>   <mime-mapping>
>     <extension>js</extension>
>     <mime-type>text/plain</mime-type>
>   </mime-mapping>
> 
> Remy

Mime
View raw message