1 17 18 19 package org.apache.jasper.tagplugins.jstl.core; 20 21 import org.apache.jasper.compiler.tagplugin.TagPlugin; 22 import org.apache.jasper.compiler.tagplugin.TagPluginContext; 23 24 public class Redirect implements TagPlugin { 25 26 public void doTag(TagPluginContext ctxt) { 27 28 boolean hasContext = ctxt.isAttributeSpecified("context"); 30 31 String urlName = ctxt.getTemporaryVariableName(); 33 String contextName = ctxt.getTemporaryVariableName(); 34 String baseUrlName = ctxt.getTemporaryVariableName(); 35 String resultName = ctxt.getTemporaryVariableName(); 36 String responseName = ctxt.getTemporaryVariableName(); 37 38 ctxt.generateJavaSource("String " + contextName + " = null;"); 40 if(hasContext){ 41 ctxt.generateJavaSource(contextName + " = "); 42 ctxt.generateAttribute("context"); 43 ctxt.generateJavaSource(";"); 44 } 45 46 ctxt.generateJavaSource("String " + urlName + " = "); 48 ctxt.generateAttribute("url"); 49 ctxt.generateJavaSource(";"); 50 51 ctxt.generateJavaSource("String " + baseUrlName + " = " + 53 "org.apache.jasper.tagplugins.jstl.Util.resolveUrl(" + urlName + ", " + contextName + ", pageContext);"); 54 ctxt.generateJavaSource("pageContext.setAttribute" + 55 "(\"url_without_param\", " + baseUrlName + ");"); 56 57 ctxt.generateBody(); 59 60 ctxt.generateJavaSource("String " + resultName + " = " + 61 "(String)pageContext.getAttribute(\"url_without_param\");"); 62 ctxt.generateJavaSource("pageContext.removeAttribute" + 63 "(\"url_without_param\");"); 64 65 ctxt.generateJavaSource("HttpServletResponse " + responseName + " = " + 67 "((HttpServletResponse) pageContext.getResponse());"); 68 69 ctxt.generateJavaSource("if(!org.apache.jasper.tagplugins.jstl.Util.isAbsoluteUrl(" + resultName + ")){"); 71 ctxt.generateJavaSource(" " + resultName + " = " 72 + responseName + ".encodeRedirectURL(" + resultName + ");"); 73 ctxt.generateJavaSource("}"); 74 75 ctxt.generateJavaSource("try{"); 77 ctxt.generateJavaSource(" " + responseName + ".sendRedirect(" + resultName + ");"); 78 ctxt.generateJavaSource("}catch(java.io.IOException ex){"); 79 ctxt.generateJavaSource(" throw new JspTagException(ex.toString(), ex);"); 80 ctxt.generateJavaSource("}"); 81 } 82 83 } 84 | Popular Tags |