我有一个JSF (IceFaces 1.8.2)网站。我需要以下功能:当显示特定的JSF页面时,我希望将其HTML代码存储在数据库中。我尝试使用Servlet过滤器来捕获代码(使用一个HttpResponseWrapper对象,因为它是在SUN网页上和许多教程中编写的),但是响应总是空的。有人能帮帮我吗?
下面是doFilter:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
Wrapper responseWrapper = new Wrapper((HttpServletResponse)response);
chain.doFilter(request, responseWrapper);
//I just want the output on stdout at the moment...
System.out.println(responseWrapper.toString());
PrintWriter out = response.getWriter();
out.write(responseWrapper.toString());
}下面是包装器:
public class Wrapper extends HttpServletResponseWrapper{
private CharArrayWriter writer;
public Wrapper(HttpServletResponse response){
super(response);
writer = new CharArrayWriter();
}
public PrintWriter getWriter(){
return (new PrintWriter(writer));
}
public String toString(){
return writer.toString();
}
public char[] toCharArray(){
return (writer.toCharArray());
}
}和web.xml:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>foo.myfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>*.iface</url-pattern>
</filter-mapping>发布于 2012-08-19 06:33:24
也许JSF发送了重定向,或者使用response.getOutputStream()编写了响应?尝试在HttpServletResponseWrapper的所有方法中设置断点,以发现调用了哪些方法。
https://stackoverflow.com/questions/12020291
复制相似问题