In a JSF page, I have a form in a view, that submits via an action
commandlink... something like:


<f:view>
  <h:form id="runReport">
    ...
    <h:commandLink action="#{reportList.run}"
value="#{text['button.runReport']}">
      <f:param name="customerId" value="#{reportList.customerId}" />
    </h:commandLink>
  ...


It invokes the "run" method of the backing bean, which executes a POI/HSSF
(excel) report, and streams it to the output stream.  Something like
('BasePage' is from AppFuse):


public class ReportList extends BasePage implements Serializable {
...
  public String run() {
    HttpServletResponse response = getResponse();
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment;
filename=Summary.xls");
    ...
    ServletOutputStream out = response.getOutputStream();
    workbook.write(out);
    out.flush();
    out.close();
    ...
    getFacesContext().responseComplete();
    return null;
  }



The first time I startup tomcat 6.0 and submit the form, the page returns
incorrectly encoded characters, that look something like:


[EMAIL 
PROTECTED]"????????????????1??????????????A?r?i?a?l?1??????????????;_("$"*
"-"_);_(@_).?)?)??


Simply hitting 'refresh' resolves the issue and then it works fine (the form
loads correctly, the browser "open or save as" dialog opens correct and the
output excel document is perfect.  If I leave the page and return, it
generally works fine. And this only seems to happen once per app server
startup.

I compared the HTTP headers of the correctly working case and the broken
case, the only two differences are the "Content-Type", which is "text/html"
when broken and "text/html;charset=UTF-8" when working.  And the second is
the response compression, which is "gzip" when working and "-" when broken. 
I disabled the gzip filter but that didn't help.  I'm not sure how to adjust
the character encoding.

Any advice would be greatly appreciated!

Thanks, Lon
-- 
View this message in context: 
http://www.nabble.com/JSF-semi-randomly-returns-incorrectly-encoded-output.--Fixed-by-hitting-refresh.-tp16982293s2369p16982293.html
Sent from the AppFuse - User mailing list archive at Nabble.com.

Reply via email to