📄 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 + -