我将 Websphere 8.5 Liberty Profile 与 Fixpack 1 一起使用,但遇到了以下似乎违反 Servlet API 的问题。

如果响应正文写入响应输出流 (HttpServletResponse#getOutputStream()),则不会在 response.setLocale() 之后设置 Content-Language 响应 header 。如果将正文写在响应编写器上(HttpServletResponse#getWriter()),则它可以正常工作

以下 JSP 不返回 Content-Language 响应 header :

<%@ 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 报告这些错误的最佳方式是什么?

我发现了一个与 Content-Language 响应 header 稍微相关的错误报告,它仅针对 Liberty Profile 报告(并且已在 FP1 中修复):http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg1PM67523

最佳答案

我建议使用 WASdev 社区上的 this page 向 IBM 报告错误。如果您不熟悉 WASdev 社区,它也是了解更多关于 Liberty 配置文件的好地方,它有一些很棒的教程。

关于servlets - Websphere 8.5 Liberty Profile - Servlet API setLocale,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14953347/

10-12 06:30