📄 parser.java
字号:
throw new ParseException(reader.mark(), Constants.getString ("jsp.error.unterminated", new Object[] { OPEN_FORWARD })); reader.advance(CLOSE_FORWARD.length()); } else reader.advance(CLOSE_FORWARD_NO_BODY.length()); Mark stop = reader.mark(); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleForward(start, stop, attrs, param); return true; } else return false; } } static { coreElements.addElement(new Forward()); } /* * Jsp comments <%-- stuff --%> */ // declarations static final class Comment implements CoreElement { private static final String OPEN_COMMENT = "<%--"; private static final String CLOSE_COMMENT = "--%>"; public boolean accept(ParseEventListener listener, JspReader reader, Parser parser) throws JasperException { if (reader.matches(OPEN_COMMENT)) { reader.advance(OPEN_COMMENT.length()); Mark start = reader.mark(); Mark stop = reader.skipUntil(CLOSE_COMMENT); if (stop == null) throw new ParseException(Constants.getString("jsp.error.unterminated", new Object[] { OPEN_COMMENT })); parser.flushCharData(parser.tmplStart, parser.tmplStop); return true; } return false; } } static { coreElements.addElement(new Comment()); } /* * Scripting elements */ // declarations static final class Declaration implements CoreElement { private static final String OPEN_DECL = "<%!"; private static final String CLOSE_DECL = "%>"; private static final JspUtil.ValidAttribute[] validAttributes = { }; public boolean accept(ParseEventListener listener, JspReader reader, Parser parser) throws JasperException { String close, open, end_open = null; Hashtable attrs = null; Mark start; if (reader.matches(OPEN_DECL)) { open = OPEN_DECL; close = CLOSE_DECL; } else return false; reader.advance(open.length()); start = reader.mark(); if (end_open != null) { attrs = reader.parseTagAttributes(); reader.skipSpaces(); if (!reader.matches(end_open)) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated")); reader.advance(end_open.length()); reader.skipSpaces(); JspUtil.checkAttributes("Declaration", attrs, validAttributes, start); } Mark stop = reader.skipUntil(close); if (stop == null) throw new ParseException(Constants.getString("jsp.error.unterminated", new Object[] { open })); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleDeclaration(start, stop, attrs); return true; } } static { coreElements.addElement(new Declaration()); } // expressions static final class Expression implements CoreElement { private static final String OPEN_EXPR = "<%="; private static final String CLOSE_EXPR = "%>"; private static final JspUtil.ValidAttribute[] validAttributes = { }; public boolean accept(ParseEventListener listener, JspReader reader, Parser parser) throws JasperException { String close, open, end_open=null; Hashtable attrs = null; Mark start; if (reader.matches(OPEN_EXPR)) { open = OPEN_EXPR; close = CLOSE_EXPR; } else return false; reader.advance(open.length()); start = reader.mark(); if (end_open != null) { attrs = reader.parseTagAttributes(); reader.skipSpaces(); if (!reader.matches(end_open)) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated")); reader.advance(end_open.length()); reader.skipSpaces(); JspUtil.checkAttributes("Expression", attrs, validAttributes, start); } Mark stop = reader.skipUntil(close); if (stop == null) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated", new Object[] { open })); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleExpression(start, stop, attrs); return true; } } static { coreElements.addElement(new Expression()); } // scriptlets static final class Scriptlet implements CoreElement { private static final String OPEN_SCRIPTLET = "<%"; private static final String CLOSE_SCRIPTLET = "%>"; private static final JspUtil.ValidAttribute[] validAttributes = { }; public boolean accept(ParseEventListener listener, JspReader reader, Parser parser) throws JasperException { String close, open, end_open = null; Hashtable attrs = null; Mark start; if (reader.matches(OPEN_SCRIPTLET)) { open = OPEN_SCRIPTLET; close = CLOSE_SCRIPTLET; } else return false; reader.advance(open.length()); start = reader.mark(); if (end_open != null) { attrs = reader.parseTagAttributes(); reader.skipSpaces(); if (!reader.matches(end_open)) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated")); reader.advance(end_open.length()); reader.skipSpaces(); JspUtil.checkAttributes("Scriptlet", attrs, validAttributes, start); } Mark stop = reader.skipUntil(close); if (stop == null) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated", new Object[] { open })); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleScriptlet(start, stop, attrs); return true; } } static { coreElements.addElement(new Scriptlet()); } /* * UseBean */ static final class Bean implements CoreElement { private static final String OPEN_BEAN = "<jsp:useBean"; private static final String CLOSE_BEAN = "/>"; private static final String CLOSE_BEAN_2 = "</jsp:useBean>"; private static final String CLOSE_BEAN_3 = ">"; private static final JspUtil.ValidAttribute[] validAttributes = { new JspUtil.ValidAttribute("id"), new JspUtil.ValidAttribute("scope"), new JspUtil.ValidAttribute("class"), new JspUtil.ValidAttribute("type"), new JspUtil.ValidAttribute("beanName") }; public boolean accept(ParseEventListener listener, JspReader reader, Parser parser) throws JasperException { if (reader.matches(OPEN_BEAN)) { Mark start = reader.mark(); reader.advance(OPEN_BEAN.length()); Hashtable attrs = reader.parseTagAttributesBean(); JspUtil.checkAttributes ("useBean", attrs, validAttributes, start); reader.skipSpaces(); if (!reader.matches(CLOSE_BEAN)) { if (!reader.matches(CLOSE_BEAN_3)) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated", new Object[] { "useBean" })); reader.advance(CLOSE_BEAN_3.length()); Mark stop = reader.mark(); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleBean(start, stop, attrs); int oldSize = reader.size; parser.parse(CLOSE_BEAN_2); if (oldSize != reader.size) { throw new ParseException (reader.mark(), Constants.getString("jsp.error.usebean.notinsamefile")); } if (!reader.matches(CLOSE_BEAN_2)) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated" , new Object[] { OPEN_BEAN }) ); reader.advance (CLOSE_BEAN_2.length()); listener.handleBeanEnd(start, stop, attrs); return true; } else { reader.advance(CLOSE_BEAN.length()); Mark stop = reader.mark(); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleBean(start, stop, attrs); listener.handleBeanEnd(start, stop, attrs); return true; } } else return false; } } static { coreElements.addElement(new Bean()); } /* * GetProperty */ static final class GetProperty implements CoreElement { private static final String OPEN_GETPROPERTY = "<jsp:getProperty"; private static final String CLOSE_GETPROPERTY = "/>"; private static final JspUtil.ValidAttribute[] validAttributes = { new JspUtil.ValidAttribute("name", true), new JspUtil.ValidAttribute("property", true) }; public boolean accept(ParseEventListener listener, JspReader reader, Parser parser) throws JasperException { if (reader.matches(OPEN_GETPROPERTY)) { Mark start = reader.mark(); reader.advance(OPEN_GETPROPERTY.length()); Hashtable attrs = reader.parseTagAttributes (); JspUtil.checkAttributes ("getProperty", attrs, validAttributes, start); reader.skipSpaces(); if (!reader.matches(CLOSE_GETPROPERTY)) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated", new Object[] { OPEN_GETPROPERTY })); else reader.advance(CLOSE_GETPROPERTY.length()); Mark stop = reader.mark(); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleGetProperty(start, stop, attrs); return true; } else return false; } } static { coreElements.addElement(new GetProperty()); } /* * SetProperty */ static final class SetProperty implements CoreElement { private static final String OPEN_SETPROPERTY = "<jsp:setProperty"; private static final String CLOSE_SETPROPERTY = "/>"; private static final JspUtil.ValidAttribute[] validAttributes = { new JspUtil.ValidAttribute("name", true), new JspUtil.ValidAttribute("property", true), new JspUtil.ValidAttribute("value"), new JspUtil.ValidAttribute("param") }; public boolean accept(ParseEventListener listener, JspReader reader, Parser parser) throws JasperException { if (reader.matches(OPEN_SETPROPERTY)) { Mark start = reader.mark(); reader.advance(OPEN_SETPROPERTY.length()); Hashtable attrs = reader.parseTagAttributes (); JspUtil.checkAttributes ("setProperty", attrs, validAttributes, start); reader.skipSpaces(); if (!reader.matches(CLOSE_SETPROPERTY)) throw new ParseException(reader.mark(), Constants.getString("jsp.error.unterminated", new Object[] { OPEN_SETPROPERTY })); else reader.advance(CLOSE_SETPROPERTY.length()); Mark stop = reader.mark(); listener.setTemplateInfo(parser.tmplStart, parser.tmplStop); listener.handleSetProperty(start, stop, attrs); return true; } else return false; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -