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 Param implements TagPlugin { 25 26 public void doTag(TagPluginContext ctxt) { 27 28 30 String nameName = ctxt.getTemporaryVariableName(); 32 String valueName = ctxt.getTemporaryVariableName(); 33 String urlName = ctxt.getTemporaryVariableName(); 34 String encName = ctxt.getTemporaryVariableName(); 35 String index = ctxt.getTemporaryVariableName(); 36 37 TagPluginContext parent = ctxt.getParentContext(); 39 if(parent == null){ 40 ctxt.generateJavaSource(" throw new JspTagExcption" + 41 "(\"<param> outside <import> or <urlEncode>\");"); 42 return; 43 } 44 45 ctxt.generateJavaSource("String " + urlName + " = " + 47 "(String)pageContext.getAttribute(\"url_without_param\");"); 48 49 ctxt.generateJavaSource("String " + nameName + " = "); 51 ctxt.generateAttribute("name"); 52 ctxt.generateJavaSource(";"); 53 54 ctxt.generateJavaSource("if(" + nameName + " != null && !" + nameName + ".equals(\"\")){"); 58 ctxt.generateJavaSource(" String " + valueName + " = "); 59 ctxt.generateAttribute("value"); 60 ctxt.generateJavaSource(";"); 61 ctxt.generateJavaSource(" if(" + valueName + " == null) " + valueName + " = \"\";"); 62 ctxt.generateJavaSource(" String " + encName + " = pageContext.getResponse().getCharacterEncoding();"); 63 ctxt.generateJavaSource(" " + nameName + " = java.net.URLEncoder.encode(" + nameName + ", " + encName + ");"); 64 ctxt.generateJavaSource(" " + valueName + " = java.net.URLEncoder.encode(" + valueName + ", " + encName + ");"); 65 ctxt.generateJavaSource(" int " + index + ";"); 66 ctxt.generateJavaSource(" " + index + " = " + urlName + ".indexOf(\'?\');"); 67 ctxt.generateJavaSource(" if(" + index + " == -1){"); 70 ctxt.generateJavaSource(" " + urlName + " = " + urlName + " + \"?\" + " + nameName + " + \"=\" + " + valueName + ";"); 71 ctxt.generateJavaSource(" }else{"); 72 ctxt.generateJavaSource(" " + urlName + " = " + urlName + " + \"&\" + " + nameName + " + \"=\" + " + valueName + ";"); 73 ctxt.generateJavaSource(" }"); 74 ctxt.generateJavaSource(" pageContext.setAttribute(\"url_without_param\"," + urlName + ");"); 75 ctxt.generateJavaSource("}"); 76 } 77 } 78 | Popular Tags |