我正在使用带有Fixpack 1的Websphere 8.5 Liberty Profile并遇到以下似乎违反Servlet API的问题。Websphere 8.5 Liberty Profile - Servlet API setLocale
如果在响应输出流(HttpServletResponse#getOutputStream())上写入响应正文,则在response.setLocale()之后未设置Content-Language响应标头。如果身体上的反应作家写它正常工作,而不是(HttpServletResponse的#的getWriter())
下面的JSP不返回内容语言响应头:
<%@ page contentType="text/plain;charset=ISO-8859-1" session="false" import="java.util.*" %><%
response.setLocale(Locale.ITALY);
java.io.OutputStream os = response.getOutputStream();
try {
os.write("Hello World".getBytes("ISO-8859-1"));
} finally {
os.close();
}
%>
注意,JSP不得包含<%...%>之外的任何字符,甚至不包括文件结尾的尾随换行符。我在这里使用JSP来复制案例 - 当然作者是正常的路要走。我们在Java代码中内部使用#getOutputStream。
我的假设是正确的,这种行为违反了Servlet规范吗?如果是这样,那么向IBM报告这些错误的最佳方式是什么?
我发现与内容语言响应头略微相关的bug报告,这是只针对Liberty配置文件报道(和已固定在FP1):http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg1PM67523
谢谢。提到的页面仅用于测试版本,但我能够用8.5.next.beta重现问题并打开了一个问题。 – ahu 2013-03-05 15:15:16
对于发行的版本,您可以打开IBM服务请求[此处](https://www-947.ibm.com/support/servicerequest/Home.action)。 – 2013-03-05 17:03:27