我有一个使用 Spring MVC 3.1.3 的应用程序和使用 Dojo 1.4 开发的 UI。该应用程序有几个控制器来处理通过上传的二进制文件dojo.io.iframe.send
。控制器发送一个 json 响应,该响应必须用
<html><body><textarea>{my json response}</textarea></body></html>.
我已经实现了 web.xml 中定义的自定义过滤器:
<filter>
<filter-name>dojoIframeFilter</filter-name>
<filter-class>com.app.web.MultipartAjaxFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>dojoIframeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器的 doFilter 有这种行为,取自http://www.oracle.com/technetwork/java/filters-137243.html http://www.oracle.com/technetwork/java/filters-137243.html
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request.getContentType() != null
&& request.getContentType().contains("multipart/form-data")) {
CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response);
chain.doFilter(request, wrapper);
log.info(wrapper.toString());
//Modify response here
}
else {
chain.doFilter(request, response);
}
}
包装器的输出为空。我还尝试了许多其他组合,例如为 spring 的调度程序 servlet 放置自定义过滤器,取消 doFilter 内的 if 块,但这些组合都不起作用。我还尝试编写一个 Spring 拦截器,但也失败了。有人可以建议任何其他想法吗?
提前致谢。
UPDATE:我禁用了 spring security 并使用普通 spring mvc 进行了测试,但问题仍然存在。我修改了标题和问题描述。