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 import org.apache.jasper.tagplugins.jstl.Util; 24 25 public class Url implements TagPlugin { 26 27 public void doTag(TagPluginContext ctxt) { 28 29 boolean hasVar, hasContext, hasScope; 31 32 hasVar = ctxt.isAttributeSpecified("var"); 34 hasContext = ctxt.isAttributeSpecified("context"); 35 hasScope = ctxt.isAttributeSpecified("scope"); 36 37 String valueName = ctxt.getTemporaryVariableName(); 39 String contextName = ctxt.getTemporaryVariableName(); 40 String baseUrlName = ctxt.getTemporaryVariableName(); 41 String resultName = ctxt.getTemporaryVariableName(); 42 String responseName = ctxt.getTemporaryVariableName(); 43 44 String strScope = "page"; 46 if(hasScope){ 47 strScope = ctxt.getConstantAttribute("scope"); 48 } 49 int iScope = Util.getScope(strScope); 50 51 ctxt.generateJavaSource("String " + valueName + " = "); 53 ctxt.generateAttribute("value"); 54 ctxt.generateJavaSource(";"); 55 56 ctxt.generateJavaSource("String " + contextName + " = null;"); 58 if(hasContext){ 59 ctxt.generateJavaSource(contextName + " = "); 60 ctxt.generateAttribute("context"); 61 ctxt.generateJavaSource(";"); 62 } 63 64 ctxt.generateJavaSource("String " + baseUrlName + " = " + 66 "org.apache.jasper.tagplugins.jstl.Util.resolveUrl(" + valueName + ", " + contextName + ", pageContext);"); 67 ctxt.generateJavaSource("pageContext.setAttribute" + 68 "(\"url_without_param\", " + baseUrlName + ");"); 69 70 ctxt.generateBody(); 72 73 ctxt.generateJavaSource("String " + resultName + " = " + 74 "(String)pageContext.getAttribute(\"url_without_param\");"); 75 ctxt.generateJavaSource("pageContext.removeAttribute(\"url_without_param\");"); 76 77 ctxt.generateJavaSource("if(!org.apache.jasper.tagplugins.jstl.Util.isAbsoluteUrl(" + resultName + ")){"); 79 ctxt.generateJavaSource(" HttpServletResponse " + responseName + " = " + 80 "((HttpServletResponse) pageContext.getResponse());"); 81 ctxt.generateJavaSource(" " + resultName + " = " 82 + responseName + ".encodeURL(" + resultName + ");"); 83 ctxt.generateJavaSource("}"); 84 85 if(hasVar){ 87 String strVar = ctxt.getConstantAttribute("var"); 88 ctxt.generateJavaSource("pageContext.setAttribute" + 89 "(\"" + strVar + "\", " + resultName + ", " + iScope + ");"); 90 91 }else{ 93 ctxt.generateJavaSource("try{"); 94 ctxt.generateJavaSource(" pageContext.getOut().print(" + resultName + ");"); 95 ctxt.generateJavaSource("}catch(java.io.IOException ex){"); 96 ctxt.generateJavaSource(" throw new JspTagException(ex.toString(), ex);"); 97 ctxt.generateJavaSource("}"); 98 } 99 } 100 101 } 102 | Popular Tags |