jsp标签

匿名 (未验证) 提交于 2019-12-02 23:43:01
<select> <checkbox> 分页 <z:page pagebean=""/>  <z:select> <c:foreach>  1、标签库的运作离不开tld文件 2、标签库的标签是定义在tld中的tag标签内(助手类)    1. 标签语言特点    <开始标签 属性="属性值">标签体</结束标签>     空标签    <br/><hr/>    <开始标签></结束标签>    <开始标签/>        ui标签    控制标签    数据标签   2. 自定义标签的开发及使用步骤   2.1 创建一个标签助手类(继承BodyTagSupport)       标签属性必须助手类的属性对应、且要提供对应get/set方法       rtexprvalue    2.2 创建标签库描述文件(tld),添加自定义标签的配置       注:tld文件必须保存到WEB-INF目录或其子目录   2.3 在JSP通过taglib指令导入标签库,并通过指定后缀       访问自定义标签  3. 标签生命周期                                       SKIP_BODY   3.1  实例化标签助手类->doStartTag()------------->doEndTag()        //主要用开发简单标签                                        EVAL_BODY_INCLUDE        SKIP_BODY   3.2  实例化标签助手类->doStartTag()------------->doAfterBody---------------->doEndTag()...                                                               EVAL_BODY_AGAIN     3.3  .....          SKIP_BODY:跳过主体   EVAL_BODY_INCLUDE:计算标签主体内容并[输出]   EVAL_BODY_BUFFERED:计算标签主体内容并[缓存]   EVAL_PAGE:计算页面的后续部分   SKIP_PAGE:跳过页面的后续部分   EVAL_BODY_AGAIN:再计算主体一次 

package com.hutao;  import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport;  public class DemoTag extends BodyTagSupport {  	/** 	 * Demo标签的助手类 	 */ 	private static final long serialVersionUID = 3818472937662127600L; 	private String test; 	 	public String getTest() { 		return test; 	} 	public void setTest(String test) { 		this.test = test; 	} 	  	@Override 	public int doStartTag() throws JspException { 		// TODO Auto-generated method stub 		System.out.println(".........doStartTag........."); 		return SKIP_BODY; 	} 	 	@Override 	public int doAfterBody() throws JspException { 		// TODO Auto-generated method stub 		System.out.println(".........doAfterBody........."); 		return super.doAfterBody(); 	} 	 	@Override 	public int doEndTag() throws JspException { 		// TODO Auto-generated method stub 		System.out.println(".........doEndTag........."); 		return super.doEndTag(); 	}  }  

当doStartTag的返回值为SKIP_BODY的时候,doAfterBody方法不执行,也就是标签体里的内容不运行

package com.hutao;  import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport;  public class DemoTag extends BodyTagSupport {  	/** 	 * Demo标签的助手类 	 */ 	private static final long serialVersionUID = 3818472937662127600L; 	private String test; 	 	public String getTest() { 		return test; 	} 	public void setTest(String test) { 		this.test = test; 	} 	  	@Override 	public int doStartTag() throws JspException { 		// TODO Auto-generated method stub 		System.out.println(".........doStartTag........."); 		return EVAL_BODY_INCLUDE; 	} 	 	@Override 	public int doAfterBody() throws JspException { 		// TODO Auto-generated method stub 		System.out.println(".........doAfterBody........."); 		return EVAL_BODY_AGAIN; 	} 	 	@Override 	public int doEndTag() throws JspException { 		// TODO Auto-generated method stub 		System.out.println(".........doEndTag........."); 		return super.doEndTag(); 	}  }  

当doStartTag的返回是EVAL_BODY_INCLUDE还有doAfterBody的返回值EVAL_BODY_AGAIN
则只运行doAfterBody方法也就是无限循环输出标签体内的值

文章来源: https://blog.csdn.net/weixin_45180770/article/details/92410270
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!