dev@glassfish.java.net

Re[2]: error-page encoding problem

From: Dmitry Mozheyko <mozheyko_d_at_mail.ru>
Date: Thu, 07 Dec 2006 09:21:23 +0300

-----Original Message-----
From: Jan Luehe <Jan.Luehe_at_Sun.COM>
To: dev_at_glassfish.dev.java.net
Date: Wed, 06 Dec 2006 14:55:18 -0800
Subject: Re: error-page encoding problem

>
> Hi Dmitry,
>
> Dmitry Mozheyko wrote On 12/06/06 02:54,:
>
> >Hi all!
> >I use glassfish-v2-b27 and i need to custom error page
> >web.xml:
> >
> >...
> > <error-page>
> > <exception-type>java.lang.Throwable</exception-type>
> > <location>/error.jsp</location>
> > </error-page>
> > <error-page>
> > <error-code>403</error-code>
> > <location>/error403.jsp</location>
> > </error-page>
> > <error-page>
> > <error-code>404</error-code>
> > <location>/error404.jsp</location>
> > </error-page>
> >...
> >
> >
> >
> >Both error403.jsp and error404.jsp pages correctly showing UTF-8 symbols, but error.jsp:
> >
> ><%_at_page contentType="text/html"%>
> ><%_at_page pageEncoding="UTF-8"%>
> ><jsp:include page="jspf/header.jsp" />
> ><b>Ошибка:</b><br />
> ><%=((Throwable)request.getAttribute("javax.servlet.error.exception")).toString()%><br />
> ><button onclick="goback()">Назад</button>
> ><jsp:include page="jspf/footer.jsp" />
> >
> >
> >
> >Show '?' signes instead russian symbols.
> >
> >
>
> I've extended our unit test to also cover the scenario you've described,
> and I'm unable
> to reproduce the issue.
>
> What is the value of the Content-Type header of your response?
>
> Could it be that you have already written output to the response writer
> *before*
> the Throwable is raised and the request is forwarded to "/error.jsp"?
>
> If so, it will be impossible for "/error.jsp" to change the response
> encoding,
> which is why you are seeing the '?' in the response.
>
> An error page is able to set the response encoding only if no output has
> been
> written to the response before the error page is invoked.
>
> Hope this helps.

Thank you, Jan.

My servlet the Throwable is raised calls this code

response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");

at the begin of 'processRequest' method, BEFORE ServletException throws.

After i have refactored my servlet-code UTF-symbols o error.jsp began to be displayed correctly.

WBR, Dmitry