📄 jspparseeventlistener.java
字号:
throw new CompileException(start, Constants.getString("jsp.error.page.multiple.language")); listener.languageDir = true; if (language != null) if (!language.equalsIgnoreCase("java")) throw new CompileException(start, Constants.getString("jsp.error.page.nomapping.language")+language); } } static final class ImportsHandler implements PageDirectiveHandler { public void handlePageDirectiveAttribute(JspParseEventListener listener, String importPkgs, Mark start, Mark stop) throws JasperException { if (importPkgs != null) { StringTokenizer tokenizer = new StringTokenizer(importPkgs, ","); while (tokenizer.hasMoreTokens()) listener.imports.addElement(tokenizer.nextToken()); } } } static final class ExtendsHandler implements PageDirectiveHandler { public void handlePageDirectiveAttribute(JspParseEventListener listener, String extendsClzz, Mark start, Mark stop) throws JasperException { if (listener.extendsDir == true) throw new CompileException(start, Constants.getString("jsp.error.page.multiple.extends")); listener.extendsDir = true; if (extendsClzz != null) { listener.extendsClass = extendsClzz; /* * If page superclass is top level class (i.e. not in a pkg) * explicitly import it. If this is not done, the compiler * will assume the extended class is in the same pkg as * the generated servlet. */ if (extendsClzz.indexOf(".") == -1) { listener.imports.addElement(extendsClzz); } } } } public void handleDirective(String directive, Mark start, Mark stop, Hashtable attrs) throws JasperException { Constants.message("jsp.message.handling_directive", new Object[] { directive, attrs }, Logger.DEBUG); if (directive.equals("page")) { Enumeration e = attrs.keys(); String attr; while (e.hasMoreElements()) { attr = (String) e.nextElement(); for(int i = 0; i < pdhis.length; i++) { PageDirectiveHandlerInfo pdhi = pdhis[i]; if (attr.equals(pdhi.attribute)) { String value = (String) attrs.get(pdhi.attribute); pdhi.handler.handlePageDirectiveAttribute(this, value, start, stop); } } } } // Do some validations... if (bufferSize == 0 && autoFlush == false) throw new CompileException(start, Constants.getString( "jsp.error.page.bad_b_and_a_combo")); if (directive.equals("taglib")) { String uri = (String) attrs.get("uri"); String prefix = (String) attrs.get("prefix"); try { TagLibraryInfo tl = new TagLibraryInfoImpl(ctxt, prefix, uri); libraries.addTagLibrary(prefix, tl); } catch (Exception ex) { ex.printStackTrace(); Object[] args = new Object[] { uri, ex.getMessage() }; throw new CompileException(start, Constants.getString("jsp.error.badtaglib", args)); } } if (directive.equals("include")) { String file = (String) attrs.get("file"); String encoding = (String) attrs.get("encoding"); if (file == null) throw new CompileException(start, Constants.getString("jsp.error.include.missing.file")); // jsp.error.include.bad.file needs taking care of here?? try { reader.pushFile(file, encoding); } catch (FileNotFoundException fnfe) { throw new CompileException(start, Constants.getString("jsp.error.include.bad.file")); } } } class GeneratorWrapper implements Generator, ClassDeclarationPhase, FileDeclarationPhase, ServiceMethodPhase, InitMethodPhase, StaticInitializerPhase { Generator generator; Mark start, stop; GeneratorWrapper(Generator generator, Mark start, Mark stop) { this.generator = generator; this.start = start; this.stop = stop; } /* * This is really a no-op. */ public boolean generateCoordinates(Class phase) { return generator.generateCoordinates(phase); } public void init(JspCompilationContext ctxt) throws JasperException { generator.init(ctxt); } public void generate(ServletWriter out, Class phase) throws JasperException { if (phase.isInstance(generator)) { boolean genCoords = generator.generateCoordinates(phase); if (genCoords) { commentGenerator.generateStartComment (generator, out, start, stop); } generator.generate(out, phase); if (genCoords) { commentGenerator.generateEndComment (generator, out, start, stop); } } } } public void handleDeclaration(Mark start, Mark stop, Hashtable attrs) throws JasperException { Generator gen = new GeneratorWrapper(new DeclarationGenerator(reader.getChars( start, stop)), start, stop); addGenerator(gen); } public void handleScriptlet(Mark start, Mark stop, Hashtable attrs) throws JasperException { Generator gen = new GeneratorWrapper(new ScriptletGenerator(reader.getChars( start, stop)), start, stop); addGenerator(gen); } public void handleExpression(Mark start, Mark stop, Hashtable attrs) throws JasperException { Generator gen = new GeneratorWrapper(new ExpressionGenerator(reader.getChars( start, stop)), start, stop); addGenerator(gen); } public void handleBean(Mark start, Mark stop, Hashtable attrs) throws JasperException { Generator gen = new GeneratorWrapper(new BeanGenerator(start, attrs, beanInfo, genSessionVariable), start, stop); addGenerator(gen); } public void handleBeanEnd(Mark start, Mark stop, Hashtable attrs) throws JasperException { Generator gen = new GeneratorWrapper(new BeanEndGenerator(), start, stop); // End the block started by useBean body. addGenerator(gen); } public void handleGetProperty(Mark start, Mark stop, Hashtable attrs) throws JasperException { Generator gen = new GeneratorWrapper(new GetPropertyGenerator(start, stop, attrs, beanInfo), start, stop); addGenerator(gen); } public void handleSetProperty(Mark start, Mark stop, Hashtable attrs) throws JasperException { Generator gen = new GeneratorWrapper(new SetPropertyGenerator(start, stop, attrs, beanInfo), start, stop); addGenerator(gen); } public void handlePlugin(Mark start, Mark stop, Hashtable attrs, Hashtable param, String fallback) throws JasperException { Constants.message("jsp.message.handling_plugin", new Object[] { attrs }, Logger.DEBUG); Generator gen = new GeneratorWrapper (new PluginGenerator (start, attrs, param, fallback), start, stop); addGenerator (gen); } public void handleForward(Mark start, Mark stop, Hashtable attrs, Hashtable param) throws JasperException { Generator gen = new GeneratorWrapper(new ForwardGenerator(start, attrs, param), start, stop); addGenerator(gen); } public void handleInclude(Mark start, Mark stop, Hashtable attrs, Hashtable param) throws JasperException { Generator gen = new GeneratorWrapper(new IncludeGenerator(start, attrs, param), start, stop); addGenerator(gen); } public void handleCharData(Mark start, Mark stop, char[] chars) throws JasperException { GeneratorBase cdg; if (ctxt.getOptions().getLargeFile()) cdg = new StoredCharDataGenerator(vector, dataFile, stringId++, chars); else if(ctxt.getOptions().getMappedFile()) cdg = new MappedCharDataGenerator(chars); else cdg = new CharDataGenerator(chars); Generator gen = new GeneratorWrapper(cdg, start, stop); addGenerator(gen); } public void handleTagBegin(Mark start, Mark stop, Hashtable attrs, String prefix, String shortTagName, TagLibraryInfo tli, TagInfo ti) throws JasperException { TagBeginGenerator tbg = new TagBeginGenerator(start, prefix, shortTagName, attrs, tli, ti, libraries, getTagHandlerStack(), getTagVarNumbers()); Generator gen = new GeneratorWrapper(tbg, start, stop); addGenerator(gen); } public void handleTagEnd(Mark start, Mark stop, String prefix, String shortTagName, Hashtable attrs, TagLibraryInfo tli, TagInfo ti) throws JasperException { TagEndGenerator teg = new TagEndGenerator(prefix, shortTagName, attrs, tli, ti, libraries, getTagHandlerStack(), getTagVarNumbers()); Generator gen = new GeneratorWrapper(teg, start, stop); addGenerator(gen); } public TagLibraries getTagLibraries() { return libraries; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -