📄 node.java
字号:
*/
public JspAttribute getNameAttribute() {
return this.nameAttr;
}
}
/**
* Represents a <jsp:output>.
*/
public static class JspOutput extends Node {
public JspOutput(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, OUTPUT_ACTION, attrs, nonTaglibXmlnsAttrs,
taglibAttrs, start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Collected information about child elements. Used by nodes like CustomTag,
* JspBody, and NamedAttribute. The information is set in the Collector.
*/
public static class ChildInfo {
private boolean scriptless; // true if the tag and its body
// contain no scripting elements.
private boolean hasUseBean;
private boolean hasIncludeAction;
private boolean hasParamAction;
private boolean hasSetProperty;
private boolean hasScriptingVars;
public void setScriptless(boolean s) {
scriptless = s;
}
public boolean isScriptless() {
return scriptless;
}
public void setHasUseBean(boolean u) {
hasUseBean = u;
}
public boolean hasUseBean() {
return hasUseBean;
}
public void setHasIncludeAction(boolean i) {
hasIncludeAction = i;
}
public boolean hasIncludeAction() {
return hasIncludeAction;
}
public void setHasParamAction(boolean i) {
hasParamAction = i;
}
public boolean hasParamAction() {
return hasParamAction;
}
public void setHasSetProperty(boolean s) {
hasSetProperty = s;
}
public boolean hasSetProperty() {
return hasSetProperty;
}
public void setHasScriptingVars(boolean s) {
hasScriptingVars = s;
}
public boolean hasScriptingVars() {
return hasScriptingVars;
}
}
/**
* Represents a custom tag
*/
public static class CustomTag extends Node {
private String uri;
private String prefix;
private JspAttribute[] jspAttrs;
private TagData tagData;
private String tagHandlerPoolName;
private TagInfo tagInfo;
private TagFileInfo tagFileInfo;
private Class tagHandlerClass;
private VariableInfo[] varInfos;
private int customNestingLevel;
private ChildInfo childInfo;
private boolean implementsIterationTag;
private boolean implementsBodyTag;
private boolean implementsTryCatchFinally;
private boolean implementsJspIdConsumer;
private boolean implementsSimpleTag;
private boolean implementsDynamicAttributes;
private Vector atBeginScriptingVars;
private Vector atEndScriptingVars;
private Vector nestedScriptingVars;
private Node.CustomTag customTagParent;
private Integer numCount;
private boolean useTagPlugin;
private TagPluginContext tagPluginContext;
/**
* The following two fields are used for holding the Java scriptlets
* that the tag plugins may generate. Meaningful only if useTagPlugin is
* true; Could move them into TagPluginContextImpl, but we'll need to
* cast tagPluginContext to TagPluginContextImpl all the time...
*/
private Nodes atSTag;
private Nodes atETag;
/*
* Constructor for custom action implemented by tag handler.
*/
public CustomTag(String qName, String prefix, String localName,
String uri, Attributes attrs, Mark start, Node parent,
TagInfo tagInfo, Class tagHandlerClass) {
this(qName, prefix, localName, uri, attrs, null, null, start,
parent, tagInfo, tagHandlerClass);
}
/*
* Constructor for custom action implemented by tag handler.
*/
public CustomTag(String qName, String prefix, String localName,
String uri, Attributes attrs, Attributes nonTaglibXmlnsAttrs,
Attributes taglibAttrs, Mark start, Node parent,
TagInfo tagInfo, Class tagHandlerClass) {
super(qName, localName, attrs, nonTaglibXmlnsAttrs, taglibAttrs,
start, parent);
this.uri = uri;
this.prefix = prefix;
this.tagInfo = tagInfo;
this.tagHandlerClass = tagHandlerClass;
this.customNestingLevel = makeCustomNestingLevel();
this.childInfo = new ChildInfo();
this.implementsIterationTag = IterationTag.class
.isAssignableFrom(tagHandlerClass);
this.implementsBodyTag = BodyTag.class
.isAssignableFrom(tagHandlerClass);
this.implementsTryCatchFinally = TryCatchFinally.class
.isAssignableFrom(tagHandlerClass);
this.implementsSimpleTag = SimpleTag.class
.isAssignableFrom(tagHandlerClass);
this.implementsDynamicAttributes = DynamicAttributes.class
.isAssignableFrom(tagHandlerClass);
this.implementsJspIdConsumer = JspIdConsumer.class
.isAssignableFrom(tagHandlerClass);
}
/*
* Constructor for custom action implemented by tag file.
*/
public CustomTag(String qName, String prefix, String localName,
String uri, Attributes attrs, Mark start, Node parent,
TagFileInfo tagFileInfo) {
this(qName, prefix, localName, uri, attrs, null, null, start,
parent, tagFileInfo);
}
/*
* Constructor for custom action implemented by tag file.
*/
public CustomTag(String qName, String prefix, String localName,
String uri, Attributes attrs, Attributes nonTaglibXmlnsAttrs,
Attributes taglibAttrs, Mark start, Node parent,
TagFileInfo tagFileInfo) {
super(qName, localName, attrs, nonTaglibXmlnsAttrs, taglibAttrs,
start, parent);
this.uri = uri;
this.prefix = prefix;
this.tagFileInfo = tagFileInfo;
this.tagInfo = tagFileInfo.getTagInfo();
this.customNestingLevel = makeCustomNestingLevel();
this.childInfo = new ChildInfo();
this.implementsIterationTag = false;
this.implementsBodyTag = false;
this.implementsTryCatchFinally = false;
this.implementsSimpleTag = true;
this.implementsJspIdConsumer = false;
this.implementsDynamicAttributes = tagInfo.hasDynamicAttributes();
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
/**
* @return The URI namespace that this custom action belongs to
*/
public String getURI() {
return this.uri;
}
/**
* @return The tag prefix
*/
public String getPrefix() {
return prefix;
}
public void setJspAttributes(JspAttribute[] jspAttrs) {
this.jspAttrs = jspAttrs;
}
public TagAttributeInfo getTagAttributeInfo(String name) {
TagInfo info = this.getTagInfo();
if (info == null)
return null;
TagAttributeInfo[] tai = info.getAttributes();
for (int i = 0; i < tai.length; i++) {
if (tai[i].getName().equals(name)) {
return tai[i];
}
}
return null;
}
public JspAttribute[] getJspAttributes() {
return jspAttrs;
}
public ChildInfo getChildInfo() {
return childInfo;
}
public void setTagData(TagData tagData) {
this.tagData = tagData;
this.varInfos = tagInfo.getVariableInfo(tagData);
if (this.varInfos == null) {
this.varInfos = ZERO_VARIABLE_INFO;
}
}
public TagData getTagData() {
return tagData;
}
public void setTagHandlerPoolName(String s) {
tagHandlerPoolName = s;
}
public String getTagHandlerPoolName() {
return tagHandlerPoolName;
}
public TagInfo getTagInfo() {
return tagInfo;
}
public TagFileInfo getTagFileInfo() {
return tagFileInfo;
}
/*
* @return true if this custom action is supported by a tag file, false
* otherwise
*/
public boolean isTagFile() {
return tagFileInfo != null;
}
public Class getTagHandlerClass() {
return tagHandlerClass;
}
public void setTagHandlerClass(Class hc) {
tagHandlerClass = hc;
}
public boolean implementsIterationTag() {
return implementsIterationTag;
}
public boolean implementsBodyTag() {
return implementsBodyTag;
}
public boolean implementsTryCatchFinally() {
return implementsTryCatchFinally;
}
public boolean implementsJspIdConsumer() {
return implementsJspIdConsumer;
}
public boolean implementsSimpleTag() {
return implementsSimpleTag;
}
public boolean implementsDynamicAttributes() {
return implementsDynamicAttributes;
}
public TagVariableInfo[] getTagVariableInfos() {
return tagInfo.getTagVariableInfos();
}
public VariableInfo[] getVariableInfos() {
return varInfos;
}
public void setCustomTagParent(Node.CustomTag n) {
this.customTagParent = n;
}
public Node.CustomTag getCustomTagParent() {
return this.customTagParent;
}
public void setNumCount(Integer count) {
this.numCount = count;
}
public Integer getNumCount() {
return this.numCount;
}
public void setScriptingVars(Vector vec, int scope) {
switch (scope) {
case VariableInfo.AT_BEGIN:
this.atBeginScriptingVars = vec;
break;
case VariableInfo.AT_END:
this.atEndScriptingVars = vec;
break;
case VariableInfo.NESTED:
this.nestedScriptingVars = vec;
break;
}
}
/*
* Gets the scripting variables for the given scope that need to be
* declared.
*/
public Vector getScriptingVars(int scope) {
Vector vec = null;
switch (scope) {
case VariableInfo.AT_BEGIN:
vec = this.atBeginScriptingVars;
break;
case VariableInfo.AT_END:
vec = this.atEndScriptingVars;
break;
case VariableInfo.NESTED:
vec = this.nestedScriptingVars;
break;
}
return vec;
}
/*
* Gets this custom tag's custom nesting level, which is given as the
* number of times this custom tag is nested inside itself.
*/
public int getCustomNestingLevel() {
return customNestingLevel;
}
/**
* Checks to see if the attribute of the given name is of type
* JspFragment.
*/
public boolean checkIfAttributeIsJspFragment(String name) {
boolean result = false;
TagAttributeInfo[] attributes = tagInfo.getAttributes();
for (int i = 0; i < attributes.length; i++) {
if (attributes[i].getName().equals(name)
&& attributes[i].isFragment()) {
result = true;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -