精华内容
下载资源
问答
  • TagSupport

    2011-11-08 18:58:01
    在上一篇自定义标签的文章中,讲到了自定标签的步骤,其中有一步是集成tagSupport。对tagSupport类也不是很熟悉,特此学习tagSupport,在此做下简要笔记。 1. TagSupport与BodyTagSupport的区别  ...
      
    

    在上一篇自定义标签的文章中,讲到了自定标签的步骤,其中有一步是集成tagSupport。对tagSupport类也不是很熟悉,特此学习tagSupport,在此做下简要笔记。


    1. TagSupport与BodyTagSupport的区别

        TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用   TagSupport,否则如果不需要交互就用BodyTagSupport。

        交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。

        用TagSupport实现的标签,都可以用BodyTagSupport来实现,因为BodyTagSupport继承了          TagSupport。

     2. doStartTag(),doEndTag()

       doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字;doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与 SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页

        doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。

       预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE.

      如果继承了TagSupport之后,如果没有改写任何的方法,标签处理的执行顺序是:

       doStartTag() ->不显示文字 ->doEndTag()->执行接下来的网页

      如果您改写了doStartTag(),则必须指定返回值,如果指定了EVAL_BODY_INCLUDE,则执行顺序是

       doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页

    展开全文
  • TagSupport 类别

    2011-11-07 21:06:41
    TagSupport 类别 如果在自订标签库时,并不需要对标签本体作处理,则您可以继承TagSupport类别,TagSupport类别实作了Tag与 IterationTag介面,IterationTag介面则是Tag介面的子介面,...
      
    

    TagSupport 类别


    如果在自订标签库时,并不需要对标签本体作处理,则您可以继承TagSupport类别,TagSupport类别实作了TagIterationTag介面,IterationTag介面则是Tag介面的子介面,TagSupport类别替您预先实作了这两个介面中的方法,在继承TagSupport之后,您视需要来改写当中的一些方法(这是 Default Adapter模式)。

    Tag
    介面中与标签处相关的方法主要有:doStartTag()doEndTag()。其中doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的回传值是EVAL_BODY_INCLUDESKIP_BODY,前者表示将显示标签间的本体文字,后者表示不显示标签间的本体文字;doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的回传值是EVAL_PAGESKIP_PAGE,传回前者表示处理完标签后继承执行以下JSP网页,传回后者则表示不处理接下来的JSP网页。

    IterationTag
    介面继承Tag介面,在标签处理上增加了doAfterBody(),这个方法是在显示完标签间文字本体之后呼叫的,其合法的回传值有EVAL_BODY_AGAINSKIP_BODY,如果传回前者,则会再显示一次标签间的文字本体,传回后者则继承执行标签处理的下一步。

    TagSupport
    类别实作了TagIterationTag介面,其预设的回传值是:doStartTag()回传 SKIP_BODYdoAfterBodyTag()回传SKIP_BODYdoEndTag()回传EVAL_PAGE所以在继承 TagSupport之后,如果没有改写任何的方法,则在标签处理上执行的顺序是:

    doStartTag() -> 不显示本体文字 -> doEndTag() -> 执行接下来的JSP网页


    如果您改写了doStartTag(),则您必须指定回传值,如果指定了EVAL_BODY_INCLUDE,则预设会照以下的顺序执行:

    doStartTag() -> 显示本体文字 -> doAfterBodyTag()->doEndTag()->执行接下来的JSP网页



    展开全文
  • 1 TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。 交互就是标签处理类是否...

    1 TagSupport与BodyTagSupport的区别

    TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。

    交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。

        TagSupport实现的标签,都可以用BodyTagSupport来实现,因为BodyTagSupport继承了TagSupport

    2 doStartTag(),doEndTag()

    doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字;doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页

        doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。

    预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE.

    如果继承了TagSupport之后,如果没有改写任何的方法,标签处理的执行顺序是:

    doStartTag() ->不显示文字 ->doEndTag()->执行接下来的网页

    如果您改写了doStartTag(),则必须指定返回值,如果指定了EVAL_BODY_INCLUDE,则执行顺序是

    doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页


    java代码示例如下:

    package com.huanlv.app.util.platform.tags;


    import java.util.List;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.TagSupport;
    import com.huanlv.app.dao.SysUserDao;
    import com.huanlv.app.entity.vo.LoginUser;
    import com.huanlv.app.util.StaticVar;
    import com.huanlv.util.SpringConfigTool;


    @SuppressWarnings("serial")
    public class JcdfAuthTag extends TagSupport {
    /**权限编码*/
    private String code;


    private SysUserDao sysUserDao=(SysUserDao)SpringConfigTool.getBean("sysUserDao");

    @SuppressWarnings("static-access")
    @Override
    public int doStartTag() throws JspException {
    Object user = pageContext.getSession().getAttribute(StaticVar.LOGIN_USER_KEY);
    if (null != user) {
    LoginUser loginUser = (LoginUser)user;
    //如果是超级管理员,则默认放行
    if (StaticVar.USER_TYPE_OF_SUPER_USER == loginUser.getUserType()) {
    return this.EVAL_BODY_INCLUDE;
    //普通用户进行权限校验
    } else {
    List<String> menuCodes =sysUserDao.queryUserMenuCode(loginUser.getUserId());//(List<String>)JedisOpExecuter.getSingleObject(StaticVar.REDIS_MENU_CODE_KEY_PREFIX+loginUser.getUserId());
    if(null != code && menuCodes.contains(code)) {
    return this.EVAL_BODY_INCLUDE;
    }
    }
    }
    return this.SKIP_BODY;
    }

    @Override
    public int doAfterBody() throws JspException {
    return super.doAfterBody();
    }


    @Override
    public int doEndTag() throws JspException {
    return super.doEndTag();
    }


    public String getCode() {
    return code;
    }


    public void setCode(String code) {
    this.code = code;
    }
    }


    /WEB-INF之下的.tld如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>1.1</jspversion>
    <tag>
    <name>upload</name>
    <tagclass>com.huanlv.app.util.platform.tags.JcdfUploadTag</tagclass>
    <bodycontent>jsp</bodycontent>     

    <!-- 定义属性 -->
    <attribute>
    <name>messageDiv</name> <!-- 属性名字 -->
    <type>String</type>  <!-- 属性类型 -->
    <requried>false</requried> <!-- 是否必须 -->
    <rtexprvale>false</rtexprvale> <!-- 表示是否可以使用JSP表达式 -->
    </attribute>

    <!-- 定义属性 -->
    <attribute>
    <name>localFile</name> <!-- 属性名字 -->
    <type>String</type>  <!-- 属性类型 -->
    <requried>false</requried> <!-- 是否必须 -->
    <rtexprvale>false</rtexprvale> <!-- 表示是否可以使用JSP表达式 -->
    </attribute>
    </tag>

    <!-- 系统权限标签 -->
    <tag>
    <name>auth</name><!-- 标签名称 -->
       <tagclass>com.huanlv.app.util.platform.tags.JcdfAuthTag</tagclass><!-- 标签对应的业务处理类 -->
       <bodycontent>jsp</bodycontent><!-- jsp:接受所有JSP语法,如定制的或内部的tag、scripts、静态HTML、脚本元素、JSP指令和动作,empty:空标记,即起始标记和结束标记之间没有内容。 -->
       <!-- 定义属性 --> 
       <attribute> 
          <name>code</name> <!-- 属性名字 --> 
          <type>String</type>  <!-- 属性类型 --> 
          <requried>true</requried> <!-- 是否必须 --> 
          <rtexprvale>false</rtexprvale> <!-- 是否可以使用JSP表达式(el),false:表示仅支持写死的值  --> 
     </attribute> 
    </tag>
    </taglib>

    展开全文
  • 自定义标签TagSupport

    2016-01-27 09:29:51
    自定义标签TagSupport
       
    学习自定义标签
    展开全文
  • TagSupport 源码学习

    2017-11-17 16:25:19
    java中自定义了一个SiteTag,用来做站点引用 Type Hierarchy 英 [ˈhaɪərɑ:ki] 类层次图如下 自顶向下进行分析 类 TagSupport 标签支持类,自定义...public class TagSupport implements IterationTag, Seriali
  • TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,如果需要交互就用BodyTagSupport。 交互:交互就是标签处理类是否...
  • TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。 交互就是标签处理类...
  • TagSupport使用入门

    2017-02-23 15:23:10
    Java代码  定义最简单的标签  自定义标签采用Default Adapter模式(缺省适配模式)  ...public class LangHuaTag extends TagSupport {   private long startTime;   private long endTim
  • JSP自定义分页标签 extends TagSupport 多种分页风格无需额外资源,使用简单易懂:WebRoot/WEB-INF/tms-tags.tld 文件路径
  • TagSupport与BodyTagSupport的区别? TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则果需要交互就用BodyTagSuppor。但用TagSupport来实现的,都可以...
  • TagSupport继承

    2009-11-25 20:27:14
    下面还是开发一个HelloWorld的标签程序,只是这个标签程序直接从TagSupport类继承。 [code="java"] package com.test.ch13; ..... public class HelloTag extends TagSupport { /** 覆盖...
  • 创建该类继承TagSupport时出错 解决办法: java.lang.NoClassDefFoundError: TagSupport 出错的原因是 JSP自定义标签出错 需要在工程中引入 jsp-api.jar 路径在 tomcat\common\lib下 ...
  • TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互就用TagSupport,若需要交互就用BodyTagSupport。 交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。用...
  • TagSupport与BodyTagSupport的区别:标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果需要交互就用BodyTagSupport。交互:标签处理类是否要读取标签体的内容和改变标签体返回的内容。用...
  • BodyTagSupport与TagSupport的区别:主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果需要交互就用BodyTagSupport。交互就是标签处理类是否要读取标签体的内容和改变标签体返回的...
  • TagSupport标签的应用

    千次阅读 2013-11-13 17:57:05
    其实一个Tag对应着一个java类,该类继承了TagSupport(也可以扩展其他类来实现)。 TagSupport实现了Tag接口,该类提供了四个常用的方法 1) doStartTag(): jsp容器在解释jsp页面时,遇到自定义标签,会先建立一个...
  • 1. TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果需要交互就用BodyTagSupport。 交互就是标签处理类是否要读取标签体的内容和改变标签体返回的...
  • TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。 交互就是标签处理类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,771
精华内容 1,908
关键字:

tagsupport