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 25 public final class Out implements TagPlugin { 26 27 public void doTag(TagPluginContext ctxt) { 28 29 boolean hasDefault=false, hasEscapeXml=false; 32 hasDefault = ctxt.isAttributeSpecified("default"); 33 hasEscapeXml = ctxt.isAttributeSpecified("escapeXml"); 34 35 String strValName = ctxt.getTemporaryVariableName(); 38 String strDefName = ctxt.getTemporaryVariableName(); 39 String strEscapeXmlName = ctxt.getTemporaryVariableName(); 40 41 ctxt.generateJavaSource("String " + strValName + " = null;"); 43 ctxt.generateJavaSource("if("); 44 ctxt.generateAttribute("value"); 45 ctxt.generateJavaSource("!=null){"); 46 ctxt.generateJavaSource(" " + strValName + " = ("); 47 ctxt.generateAttribute("value"); 48 ctxt.generateJavaSource(").toString();"); 49 ctxt.generateJavaSource("}"); 50 51 ctxt.generateJavaSource("String " + strDefName + " = null;\n"); 54 if(hasDefault){ 55 ctxt.generateJavaSource("if("); 56 ctxt.generateAttribute("default"); 57 ctxt.generateJavaSource(" != null){"); 58 ctxt.generateJavaSource(strDefName + " = ("); 59 ctxt.generateAttribute("default"); 60 ctxt.generateJavaSource(").toString();"); 61 ctxt.generateJavaSource("}"); 62 } 63 64 ctxt.generateJavaSource("boolean " + strEscapeXmlName + " = true;"); 67 if(hasEscapeXml){ 68 ctxt.generateJavaSource(strEscapeXmlName + " = Boolean.parseBoolean(("); 69 ctxt.generateAttribute("default"); 70 ctxt.generateJavaSource(").toString());"); 71 } 72 73 ctxt.generateJavaSource("if(null != " + strValName +"){"); 75 ctxt.generateJavaSource(" if(" + strEscapeXmlName + "){"); 76 ctxt.generateJavaSource(" " + strValName + " = org.apache.jasper.tagplugins.jstl.Util.escapeXml(" + strValName + ");"); 77 ctxt.generateJavaSource(" }"); 78 ctxt.generateJavaSource(" out.write(" + strValName + ");"); 79 ctxt.generateJavaSource("}else{"); 80 ctxt.generateJavaSource(" if(null != " + strDefName + "){"); 81 ctxt.generateJavaSource(" if(" + strEscapeXmlName + "){"); 82 ctxt.generateJavaSource(" " + strDefName + " = org.apache.jasper.tagplugins.jstl.Util.escapeXml(" + strDefName + ");"); 83 ctxt.generateJavaSource(" }"); 84 ctxt.generateJavaSource(" out.write(" + strDefName + ");"); 85 ctxt.generateJavaSource(" }else{"); 86 ctxt.generateBody(); 87 ctxt.generateJavaSource(" }"); 88 ctxt.generateJavaSource("}"); 89 } 90 } 91 | Popular Tags |