我有一个基于AbstractJDomPayloadEndpoint
的Spring Web服务。此服务工作正常,但我的客户端需要将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设置的,并且响应是提交的,所以我在过滤器中设置的任何内容都不会产生影响。
我的appserver是WebLogic 9.2.3。
答案 0 :(得分:1)
是的,您的过滤器代码将失败,因为在doFilter()
完成时,响应将完全提交,并且您将无法更改内容类型标头。
我建议编写HttpServletResponseWrapper
的子类,重写setContentType()
和/或setCharacterEncoding()
方法,将值设置为您想要的值。然后,将包装器的实例(包装原始响应)传递给doFilter()
。