X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fbranding%2Fweb%2FForceIncludeFilter.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fbranding%2Fweb%2FForceIncludeFilter.java;h=953e8b2307f5b05737f9ecee6a53ec46005d8608;hb=b8b2fc094d0313626224371dcbdf18784d56d51f;hp=0000000000000000000000000000000000000000;hpb=8e8ddfc9757a41e6b5df5997a9d9859de50da8e1;p=website diff --git a/src/main/java/de/juplo/branding/web/ForceIncludeFilter.java b/src/main/java/de/juplo/branding/web/ForceIncludeFilter.java new file mode 100644 index 00000000..953e8b23 --- /dev/null +++ b/src/main/java/de/juplo/branding/web/ForceIncludeFilter.java @@ -0,0 +1,55 @@ +package de.juplo.branding.web; + +import java.io.IOException; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.tiles.servlet.context.ServletUtil; + + + +/** + * Fixes a logic-bug in the colaboration of Thymeleaf and Tiles. + * + * Tiles 2.2.x tries to use RequestDispatcher.forward() whenever possible, but + * this breaks Thymeleaf, because the original response is marked as committed, + * when forwarding. Hence, Thymeleaf cannot render its result in the response + * and an empty page is returned. + * + * @author kai + */ +public class ForceIncludeFilter implements Filter +{ + + @Override + public void init(FilterConfig filterConfig) throws ServletException + { + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) + throws + IOException, + ServletException + { + if ((response instanceof HttpServletResponse)) + ServletUtil.setForceInclude((HttpServletRequest)request, true); + + chain.doFilter(request, response); + } + + @Override + public void destroy() + { + } + +}