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 Catch implements TagPlugin { 25 26 public void doTag(TagPluginContext ctxt) { 27 28 boolean hasVar = ctxt.isAttributeSpecified("var"); 30 31 String exceptionName = ctxt.getTemporaryVariableName(); 33 String caughtName = ctxt.getTemporaryVariableName(); 34 35 ctxt.generateJavaSource("boolean " + caughtName + " = false;"); 37 ctxt.generateJavaSource("try{"); 38 ctxt.generateBody(); 39 ctxt.generateJavaSource("}"); 40 41 ctxt.generateJavaSource("catch(Throwable " + exceptionName + "){"); 43 44 if(hasVar){ 47 String strVar = ctxt.getConstantAttribute("var"); 48 ctxt.generateJavaSource(" pageContext.setAttribute(\"" + strVar + "\", " 49 + exceptionName + ", PageContext.PAGE_SCOPE);"); 50 } 51 52 ctxt.generateJavaSource(" " + caughtName + " = true;"); 55 ctxt.generateJavaSource("}"); 56 57 ctxt.generateJavaSource("finally{"); 59 60 if(hasVar){ 63 String strVar = ctxt.getConstantAttribute("var"); 64 ctxt.generateJavaSource(" if(!" + caughtName + "){"); 65 ctxt.generateJavaSource(" pageContext.removeAttribute(\"" + strVar + "\", PageContext.PAGE_SCOPE);"); 66 ctxt.generateJavaSource(" }"); 67 } 68 69 ctxt.generateJavaSource("}"); 70 } 71 72 } 73 | Popular Tags |