我正在使用带有Fixpack 1的Websphere 8.5 Liberty Profile,并遇到了以下似乎违反Servlet API的问题。
如果在响应输出流(HttpServletResponse#getOutputStream())上写入响应正文,则不在response.setLocale()之后设置Content-Language响应头。如果正文被写在响应编写器上(HttpServletResponse #getWriter())
,它工作正常以下JSP不返回Content-Language响应头:
<%@ 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不得包含&lt;%...%&gt;以外的任何字符,甚至不能包含文件末尾的尾部换行符。我在这里使用JSP只是为了重现案例 - 当然作家是正常的方式。我们在Java代码中内部使用了#getOutputStream。
我的假设是否正确,这种行为违反了Servlet规范?如果是这样,向IBM报告这些错误的最佳方法是什么?
我发现了一个与Content-Language响应标题略有关联的错误报告,该报告仅针对Liberty Profile报告(并已在FP1中修复):http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg1PM67523
答案 0 :(得分:2)
我建议在WASdev社区使用this page向IBM报告错误。如果您不熟悉WASdev社区,那么它也是了解有关Liberty配置文件的更多信息的好地方,它有一些很棒的教程。