1

我有一个基于AbstractJDomPayloadEndpoint. 该服务工作正常,除了我的客户端需要将 HTTP 标头Content-Type设置为正确的字符集(在我的情况下为 utf-8)。我找不到可以配置的地方。

我尝试编写一个简单的 servlet Filter

chain.doFilter(request, response);
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Type", "text/xml; charset=utf-8");

但这根本不会改变标题。我怀疑内容类型标头是由 Spring-WS 设置的,并且响应已提交,因此我在过滤器中设置的任何内容都不会产生影响。

我的应用服务器是 WebLogic 9.2.3。

4

1 回答 1

1

是的,您的过滤器代码将失败,因为到doFilter()完成时,响应将已完全提交,并且您将无法更改内容类型标头。

我建议编写一个子类HttpServletResponseWrapper,覆盖setContentType()和/或setCharacterEncoding()方法以将值设置为您想要的值。然后将包装器的实例(包装原始响应)传递给doFilter().

于 2010-10-13T19:27:35.980 回答