如何开发可以访问网页内容的标签库[转]

普通的标签库(extends TagSupport)只能控制是否显示夹在标签库中间的内容是否显示而不能改变。但是有时候我们需要例如下面
<dlog:format>用户姓名: $1</dlog:format> ,我们需要format这个标签可以把$1替换成用户姓名,这时候我们就需要可以访问到夹于dlog:format之间的信息。 

在标签库开发中我们只需要让我们的标签库类扩展BodyTagSupport而不是TagSupport,下面是一个简单的例子:

/*
 * Created on 2004-2-15
 */
package jdlog.util.tags;

import java.io.IOException;
import java.io.Reader;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.lang.StringUtils;
/**
 * @author Liudong
 * 格式化大文本内容以适应在页面上进行显示
 */
public class HtmlFormatTag extends BodyTagSupport {

    boolean ubb = false;
    boolean html= false;
    boolean face= false;

    /* (non-Javadoc)
     * @see javax.servlet.jsp.tagext.Tag#doStartTag()
     */
    public int doStartTag() throws JspException {
        return EVAL_BODY_BUFFERED;
    }

    /* (non-Javadoc)
     * @see javax.servlet.jsp.tagext.Tag#doStartTag()
     */
    public int doEndTag() throws JspException {
        Reader reader = getBodyContent().getReader();
        char[] buf = new char[1024];
        try{
            StringBuffer content = new StringBuffer(1024);
            do{
                int  rc = reader.read(buf);
                if(rc>0)
                    content.append(buf,0,rc);
                if(rc<1024)
                    break;
            }while(true);            
            pageContext.getOut().write(format(content.toString(),ubb,html,face));        
        }catch(IOException e0){
        }
        return EVAL_PAGE;
    }
    /**
     * HTML输出内容格式转换
     * @param content
     * @param useUbb
     * @param transHtml
     * @param useFace
     * @return
     */
    protected String format(String content, boolean useUbb, boolean transHtml, boolean useFace){
        String html = content;
        if(transHtml){
            html = StringUtils.replace(html,"\t","&nbsp;&nbsp;&nbsp;&nbsp;");//替换跳格
            html = StringUtils.replace(html," ","&nbsp;");//替换空格
            html = StringUtils.replace(html,"\n","<br>");//替换换行
        }
        if(useUbb){
            
        }
        return html;
    }
    /* (non-Javadoc)
     * @see javax.servlet.jsp.tagext.Tag#release()
     */
    public void release() {
        super.release();
    }

    /**
     * @return
     */
    public boolean isFace() {
        return face;
    }

    /**
     * @return
     */
    public boolean isHtml() {
        return html;
    }

    /**
     * @return
     */
    public boolean isUbb() {
        return ubb;
    }

    /**
     * @param b
     */
    public void setFace(boolean b) {
        face = b;
    }

    /**
     * @param b
     */
    public void setHtml(boolean b) {
        html = b;
    }

    /**
     * @param b
     */
    public void setUbb(boolean b) {
        ubb = b;
    }
}

AddThis Social Bookmark Button

相关文档(Relevant Entries)
JNI完全手册
JBuilder9制作EXE文件
如何在Java中调用dll
JNI调用固有方法
Cache Your Data JDBC vs ADO NET
IntelliJ IDEA 5.0 新特性
用JavaHelp系统开发和交付更好的文档
《Eclipse集成开发工具》
Posted on June 13, 2007 7:53 PM | | | Comments (0) | | TrackBacks (0)

引用地址(TRACKBACKS)
 
TrackBack URL for this entry:
http://www.wujianrong.com/mt-tb.cgi/5537

发布评论(ADD YOUR COMMENTS)
 
感谢您参与评论;发表您的意见时请保持文章的相关性;不相关的或是单纯宣传的内容可能会被删掉。您的E-mail只是用来确认您发表的文章,不会出现在网页上。
Please keep your comments relevant to this blog entry. Email addresses are never displayed, but they are required to confirm your comments.

称呼(Name):      记住我的个人信息(Remember)
邮箱(Email):
网址(URL):
评论(Add your comments):

相关内容
广告计划