You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Stevenson, Chris (SSABSA)" <ch...@ssabsa.sa.gov.au> on 2000/03/13 06:28:42 UTC
BUG?: Writing NaN% to a ServletOutputStream
Using Tomcat 3.1beta1
When I use a
NumberFormat.getPercentInstance()
to write to a ServletOutputStream, and try to format a NaN
out.print("<p>" + nf.format(60.0/0) + "</p>");
I get the following Exception:
java.io.IOException: cannot find message associated with key :
servletOutputStream.fmt.not_iso8859_1
The underlying Exception seems to be stream format error, but
this hapens ONLY if I do the call in a servlet - if it is in
a JSP file it does not cause an error!
Is this because I have not set the output encoding? or is it a
bug?
chris.
-- test Servlet: Does cause Error
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestBug extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse
resp)
throws ServletException, java.io.IOException {
ServletOutputStream out = resp.getOutputStream();
out.print("<html>");
out.print("<head>");
out.print("</head>");
out.print("<body>");
out.print("<p>%?</p>");
NumberFormat nf = NumberFormat.getPercentInstance();
out.print("<p>" + nf.format(60.0/0) + "</p>"); //NaN -> ?%
out.print("</body>");
out.print("</html>");
out.close();
}
}
-- test JSP: Does NOT cause error
<%@ page import="java.text.NumberFormat"%>
<p>?%</p>
<p>
<%
NumberFormat nf = NumberFormat.getPercentInstance();
out.print("<p>" + nf.format(60.0/0) + "</p>"); //NaN -> ?%
%>
-- Full exception
Internal Servlet Error:
java.io.IOException: cannot find message associated with key :
servletOutputStream.fmt.not_iso8859_1
at
org.apache.tomcat.core.BufferedServletOutputStream.print(BufferedServletOutp
utStream.java:222)
at TestBug.doGet(TestBug.java:20)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:390)
at
org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:422)
at
org.apache.tomcat.servlets.InvokerServlet.service(InvokerServlet.java:257)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:390)
at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:523)
at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:146)
at
org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:334
)
at java.lang.Thread.run(Thread.java:484)
-- Chris Stevenson ----------------------- SSABSA --
Senior Secondary Assessment Board of South Australia
60 Greenhill Road, Wayville SA 5034, Australia
email: chris@ssabsa.sa.gov.au
phone: (08) 8372 7515
fax: (08) 8372 7590
----------------------------------------------------
Re: BUG?: Writing NaN% to a ServletOutputStream
Posted by Niclas Hedhman <ni...@localbar.com>.
"Stevenson, Chris (SSABSA)" wrote:
> out.print("<p>" + nf.format(60.0/0) + "</p>"); //NaN -> ?%
Hold on a second.... How come you don't get a ArithmeticException for division
by zero?
Niclas
Re: BUG?: Writing NaN% to a ServletOutputStream
Posted by Pierpaolo Fumagalli <pi...@apache.org>.
"Stevenson, Chris (SSABSA)" wrote:
>
> Using Tomcat 3.1beta1
>
> When I use a
> NumberFormat.getPercentInstance()
> to write to a ServletOutputStream, and try to format a NaN
> out.print("<p>" + nf.format(60.0/0) + "</p>");
> I get the following Exception:
Does it concerns Cocoon????????
Pier
Re: BUG?: Writing NaN% to a ServletOutputStream
Posted by Niclas Hedhman <ni...@localbar.com>.
Looks like the PercentInstance is trying to output characters that are not
defined in the 8859-1 character set.
The missing message of the key, is a ResourceBundle thing, I guess. No text has
been defined in the resource bundle, and is not part of the actual problem.
Could you possibly capture all those characters to a string object, convert it
to an char[] and output the value of each one, to see exactly what is
happening.
The reason for JSP is working, could be things like, JSP is outputting to the
Writer instead of the Stream and there are no checks there or those characters
are filtered out.
Niclas
"Stevenson, Chris (SSABSA)" wrote:
> Using Tomcat 3.1beta1
>
> When I use a
> NumberFormat.getPercentInstance()
> to write to a ServletOutputStream, and try to format a NaN
> out.print("<p>" + nf.format(60.0/0) + "</p>");
> I get the following Exception:
>
> java.io.IOException: cannot find message associated with key :
> servletOutputStream.fmt.not_iso8859_1
>
> The underlying Exception seems to be stream format error, but
> this hapens ONLY if I do the call in a servlet - if it is in
> a JSP file it does not cause an error!
>
> Is this because I have not set the output encoding? or is it a
> bug?
>
> chris.
>
> -- test Servlet: Does cause Error
>
> import java.text.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> public class TestBug extends HttpServlet {
> protected void doGet(HttpServletRequest request, HttpServletResponse
> resp)
> throws ServletException, java.io.IOException {
> ServletOutputStream out = resp.getOutputStream();
> out.print("<html>");
> out.print("<head>");
> out.print("</head>");
> out.print("<body>");
> out.print("<p>%?</p>");
> NumberFormat nf = NumberFormat.getPercentInstance();
> out.print("<p>" + nf.format(60.0/0) + "</p>"); //NaN -> ?%
> out.print("</body>");
> out.print("</html>");
> out.close();
> }
> }
>
> -- test JSP: Does NOT cause error
>
> <%@ page import="java.text.NumberFormat"%>
> <p>?%</p>
> <p>
> <%
> NumberFormat nf = NumberFormat.getPercentInstance();
> out.print("<p>" + nf.format(60.0/0) + "</p>"); //NaN -> ?%
> %>
>
> -- Full exception
>
> Internal Servlet Error:
>
> java.io.IOException: cannot find message associated with key :
> servletOutputStream.fmt.not_iso8859_1
> at
> org.apache.tomcat.core.BufferedServletOutputStream.print(BufferedServletOutp
> utStream.java:222)
> at TestBug.doGet(TestBug.java:20)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
> at
> org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:390)
> at
> org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:422)
> at
> org.apache.tomcat.servlets.InvokerServlet.service(InvokerServlet.java:257)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
> at
> org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:390)
> at
> org.apache.tomcat.core.ContextManager.service(ContextManager.java:523)
> at
> org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
> onnectionHandler.java:146)
> at
> org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:334
> )
> at java.lang.Thread.run(Thread.java:484)
>
> -- Chris Stevenson ----------------------- SSABSA --
> Senior Secondary Assessment Board of South Australia
> 60 Greenhill Road, Wayville SA 5034, Australia
> email: chris@ssabsa.sa.gov.au
> phone: (08) 8372 7515
> fax: (08) 8372 7590
> ----------------------------------------------------