regexptag.java
来自「jakarta-taglibs」· Java 代码 · 共 101 行
JAVA
101 行
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.taglibs.regexp;
import java.util.*;
import org.apache.oro.text.*;
import org.apache.oro.text.perl.*;
import org.apache.oro.text.regex.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
/**
* JSP Tag <b>regexp</b>, used to define a perl regular expression
* for later use as a script variable.
* <p>
* The body of the tag is used as the regular expression.
* <p>
* JSP Tag Lib Descriptor
* <p><pre>
* <name>regexp</name>
* <tagclass>org.apache.taglibs.regexp.RegexpTag</tagclass>
* <bodycontent>JSP</bodycontent>
* <info>Create a script variable for a regular expression.</info>
* <attribute>
* <name>id</name>
* <required>true</required>
* <rtexprvalue>false</rtexprvalue>
* </attribute>
* </pre>
*
* @see RegexpData
*
* @author Glenn Nielsen
*/
public class RegexpTag extends BodyTagSupport
{
// The regular expression to use for this tag
private String regexptext = null;
/**
* Returns EVAL_BODY_TAG so the body of the tag can be evaluated.
*
* @return EVAL_BODY_TAG
*/
public final int doStartTag() throws JspException
{
return EVAL_BODY_TAG;
}
/**
* Read the body of the regexp tag to obtain the regular expression.
*
* @return SKIP_BODY
*/
public final int doAfterBody() throws JspException
{
// Use the body of the tag as regular expression
BodyContent body = getBodyContent();
regexptext = body.getString().trim();
// Clear the body since we only used it as input for the
// regular expression
body.clearBody();
// Make sure we have some text for the regexp
if( regexptext == null || regexptext.length() <= 0 )
throw new JspException(
"regexp tag regexp could not find a regular expresion in body of tag.");
// Add the regular expression
RegexpData rd = new RegexpData(regexptext);
PatternCacheLRU regexp = RegexpData.getPatternCache();
try {
regexp.addPattern(regexptext,
Perl5Compiler.MULTILINE_MASK|Perl5Compiler.READ_ONLY_MASK);
} catch(MalformedPatternException e) {
throw new JspException("regexp tag regexp, malformed pattern \"" +
regexptext + "\" " + e.getMessage());
}
pageContext.setAttribute(id,rd,PageContext.PAGE_SCOPE);
return SKIP_BODY;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?