1 13 package info.magnolia.cms.taglibs.util; 14 15 import info.magnolia.cms.beans.config.Server; 16 import info.magnolia.cms.core.Content; 17 import info.magnolia.cms.util.Resource; 18 19 import java.io.IOException ; 20 import java.util.Iterator ; 21 22 import javax.servlet.http.HttpServletRequest ; 23 import javax.servlet.http.HttpServletResponse ; 24 import javax.servlet.jsp.JspException ; 25 import javax.servlet.jsp.tagext.BodyTagSupport ; 26 27 import org.apache.commons.lang.StringUtils; 28 import org.slf4j.Logger; 29 import org.slf4j.LoggerFactory; 30 31 32 71 public class RedirectTag extends BodyTagSupport { 72 73 76 private static final long serialVersionUID = 222L; 77 78 81 private static Logger log = LoggerFactory.getLogger(RedirectTag.class); 82 83 86 private String var; 87 88 92 public void setVar(String var) { 93 this.var = var; 94 } 95 96 99 public int doStartTag() throws JspException { 100 HttpServletRequest request = (HttpServletRequest ) pageContext.getRequest(); 101 String location = getRedirectLocation(request); 102 if (!Server.isAdmin() || Resource.showPreview(request)) { 103 104 if (location != null) { 105 try { 106 ((HttpServletResponse ) pageContext.getResponse()).sendRedirect(request.getContextPath() + location); 107 } 108 catch (IOException e) { 109 log.error("Could not redirect to first child HTML page: " + e.getMessage()); } 111 } 112 } 113 else if (StringUtils.isNotBlank(var)) { 114 request.setAttribute(var, location); 115 } 116 return super.doStartTag(); 117 } 118 119 122 public void release() { 123 this.var = null; 124 super.release(); 125 } 126 127 132 private String getRedirectLocation(HttpServletRequest request) { 133 Content page = Resource.getActivePage(request); 134 Iterator it = page.getChildren().iterator(); 135 if (it.hasNext()) { 136 Content c = (Content) it.next(); 137 return c.getHandle() + '.' + Server.getDefaultExtension(); 138 } 139 140 return null; 141 } 142 143 } 144 | Popular Tags |