正在阅读:JSP中的TagLib应用(4)JSP中的TagLib应用(4)

2004-02-14 09:33 出处:ASPCN 作者:False 责任编辑:pjl
下面到了关键部分乐。 对tag进行处理。其实很多情况下我们是使用已经提供的taglib. 别人/公司已经做好了tag和处理部分,打好了包 我们需要做的只是在我们的jsp中去应用. 但是当我们自己做个taglib时, 就需要编写这部分tag handler了. 这里只针对上面文件里提到的insert tag,其他的为了避免重复,就不一一说明了 ==================== InsertTag.java============================== /* * $Id: InsertTag.java,v 1.13 2000/03/04 02:54:57 brydon Exp $ * Copyright 1999 Sun Microsystems, Inc. All rights reserved. * Copyright 1999 Sun Microsystems, Inc. Tous droits réservés. */ package com.sun.estore.taglib; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.tagext.TagSupport; import com.sun.estore.util.Debug; /** * This class is an easy interface to the JSP template or other * text that needs to be inserted. * @author Greg Murray */ public class InsertTag extends TagSupport { private boolean directInclude = false; private String parameter = null; private String templateName = null; private Template template = null; private TemplateParameter templateParam = null; /** * default constructor */ public InsertTag() { super(); } public void setTemplate(String templateName){ this.templateName = templateName; } public void setParameter(String parameter){ this.parameter = parameter; } public int doStartTag() { try{ if (templateName != null){ template = (Template)pageContext.getRequest().getAttribute("template"); } } catch (NullPointerException e){ Debug.println("Error extracting template from session: " + e); } if (parameter != null && template != null) templateParam = (TemplateParameter)template.getParam(parameter); if (templateParam != null) directInclude = templateParam.isDirect(); return SKIP_BODY; } public int doEndTag() throws JspTagException { try{ pageContext.getOut().flush(); } catch (Exception e){ // do nothing } try { if (directInclude && templateParam != null) { pageContext.getOut().println(templateParam.getValue()); } else if (templateParam != null) { if (templateParam.getValue() != null) pageContext.getRequest().getRequestDispatcher(templateParam.getValue()).include(pageContext.getRequest(), pageContext.getResponse()); } } catch (Throwable ex) { ex.printStackTrace(); } return EVAL_PAGE; } } 可以看到。InsertTag.java继承了javax.servlet.jsp.tagext.TagSupport类. 因为在TagSupport中定义了一些接口.
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品