1 12 package org.displaytag.filter; 13 14 import java.io.IOException ; 15 import java.util.HashMap ; 16 import java.util.Map ; 17 18 import javax.servlet.Filter ; 19 import javax.servlet.FilterChain ; 20 import javax.servlet.FilterConfig ; 21 import javax.servlet.ServletException ; 22 import javax.servlet.ServletRequest ; 23 import javax.servlet.ServletResponse ; 24 import javax.servlet.http.HttpServletRequest ; 25 import javax.servlet.http.HttpServletResponse ; 26 27 import org.apache.commons.lang.StringUtils; 28 import org.apache.commons.logging.Log; 29 import org.apache.commons.logging.LogFactory; 30 import org.displaytag.Messages; 31 import org.displaytag.tags.TableTag; 32 import org.displaytag.tags.TableTagParameters; 33 34 35 82 public class ResponseOverrideFilter implements Filter 83 { 84 85 88 private Log log; 89 90 93 private boolean buffer = true; 94 95 98 public void init(FilterConfig filterConfig) 99 { 100 log = LogFactory.getLog(ResponseOverrideFilter.class); 101 String bufferParam = filterConfig.getInitParameter("buffer"); 102 if (log.isDebugEnabled()) 103 { 104 log.debug("bufferParam=" + bufferParam); 105 } 106 buffer = bufferParam == null || StringUtils.equalsIgnoreCase("true", bufferParam); 107 108 log.info("Filter initialized. Response buffering is " + (buffer ? "enabled" : "disabled")); 109 } 110 111 114 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 115 throws IOException , ServletException 116 { 117 118 if (servletRequest.getParameter(TableTagParameters.PARAMETER_EXPORTING) == null) 119 { 120 if (log.isDebugEnabled()) 121 { 122 log.debug(Messages.getString("ResponseOverrideFilter.parameternotfound")); } 124 filterChain.doFilter(servletRequest, servletResponse); 126 return; 127 } 128 129 HttpServletRequest request = (HttpServletRequest ) servletRequest; 130 131 BufferedResponseWrapper wrapper = new BufferedResponseWrapper13Impl((HttpServletResponse ) servletResponse); 132 133 Map contentBean = new HashMap (4); 134 if (buffer) 135 { 136 contentBean.put(TableTagParameters.BEAN_BUFFER, Boolean.TRUE); 137 } 138 request.setAttribute(TableTag.FILTER_CONTENT_OVERRIDE_BODY, contentBean); 139 140 filterChain.doFilter(request, wrapper); 141 142 ExportDelegate.writeExport((HttpServletResponse ) servletResponse, servletRequest, wrapper); 143 } 144 145 148 public void destroy() 149 { 150 } 152 } | Popular Tags |