Java SpringWS:指定内容类型

Java SpringWS:指定内容类型,java,servlets,http-headers,spring-ws,Java,Servlets,Http Headers,Spring Ws,我有一个基于AbstractJDomPayloadEndpoint的Spring Web服务。此服务工作正常,只是我的客户端需要将HTTP头内容类型设置为正确的字符集(在我的示例中为utf-8)。我找不到哪里可以配置它 我尝试编写一个简单的servlet过滤器: chain.doFilter(request, response); HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.set

我有一个基于
AbstractJDomPayloadEndpoint
的Spring Web服务。此服务工作正常,只是我的客户端需要将HTTP头
内容类型
设置为正确的字符集(在我的示例中为utf-8)。我找不到哪里可以配置它

我尝试编写一个简单的servlet
过滤器

chain.doFilter(request, response);
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Type", "text/xml; charset=utf-8");
但这根本不会改变标题。我怀疑内容类型头是由SpringWS设置的,并且响应是提交的,所以我在过滤器中设置的任何内容都不会产生影响


我的appserver是WebLogic 9.2.3。

是的,您的筛选代码将失败,因为在
doFilter()
完成时,响应将已完全提交,并且不允许您更改内容类型标题


我建议编写
HttpServletResponseWrapper
的子类,重写
setContentType()
和/或
setCharacterEncoding()
方法,将值设置为所需的值。然后将包装器的实例(包装原始响应)传递给
doFilter()

是的,您的筛选代码将失败,因为在
doFilter()
完成时,响应将已完全提交,并且不允许您更改内容类型标题


我建议编写
HttpServletResponseWrapper
的子类,重写
setContentType()
和/或
setCharacterEncoding()
方法,将值设置为所需的值。然后将包装器的实例(包装原始响应)传递给
doFilter()

谢谢!为什么我没有想到HttpServletResponseWrapper?不过,如果有一种方法可以配置SpringWS以直接使用正确的编码,那就太好了……谢谢!为什么我没有想到HttpServletResponseWrapper?不过,如果有一种方法可以将SpringWS配置为直接使用正确的编码,那就太好了。。。