TagSupport.SKIP_BODY,SKIP_PAGE,EVAL_BODY_INCLUDE,EVAL_BODY_AGAIN

2024-03-16 15:48

本文主要是介绍TagSupport.SKIP_BODY,SKIP_PAGE,EVAL_BODY_INCLUDE,EVAL_BODY_AGAIN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SKIP_BODY,SKIP_PAGE,EVAL_BODY_INCLUDE,EVAL_BODY_AGAIN返回值的各个含义
SKIP_BODY                  隐含0:跳过了开始和结束标签之间的代码。  
EVAL_BODY_INCLUDE隐含1:将body的内容输出到存在的输出流中   
SKIP_PAGE                  隐含5忽略剩下的页面。  
EVAL_PAGE                 隐含6:继续执行下面的页  

EVAL_BODY_AGAIN  反复执行所处的方法
---------------------------------------------------------------  

doStartTag()和doEndTag()返回值是在Tag  Interface里定义的静态int  
 
SKIP_BODY隐含0      

在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就计算标签的body  
                                      若返回SKIP_BODY就不计算标签的body  
   
  在doEndTag()方法中,若返回EVAL_PAGE容器在标签结束时继续计算jsp页面的其它部分,  
                                      若返回SKIP_PAGE则在标签结束时停止计算jsp页面其他的部分。  
   
  当你实现了BodyTag接口时,也就是你进行带body标签的开发时,有doAfterBody()方法。  
              当返回EVAL_BODY_TAG时,表示继续计算一次BodyTag,直到返回SKIP_BODY才会调用doEndTag()方法

在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就计算标签的body  
                                      若返回SKIP_BODY就不计算标签的body   

传统的标签的生命周期

当容器创建一个新的标签实例后,通过setPageContect(PageContext)来设置标签的页面上下文。
使用setParent(Tag)方法设置这个标签的上一级标签,如果没有上一级标签,设置为null
设置标签的属性,这个属性在标签库描述文件中定义,如果没有定义属性,就不调用此类方法。
调用doStartTag(),这个方法有两个返回值:               

1、如果返回的是:EVAL_BODY_INCLUDE, 则继续计算Body。                                             

2、如果返回的是:SKIP_BODY 就不计算 Body。

调用doEndTag(),这个方法也有两个返回值:                                                       

1、如果返回的是:EVAL_PAGE , 容器将在标签结束时继续计算 JSP 页面其他的部分;                   

2、如果返回的是:SKIP_PAGE ,容器将在标签结束时停止计算 JSP 页面其他的部分。

调用release() 方法释放程序占用的任何资源。


带有Body的标签的生命周期:

当容器创建一个新的标签实例后,通过setPageContect(PageContext)来设置标签的页面上下文。

使用setParent(Tag)方法设置这个标签的上一级标签,如果没有上一级标签,设置为null

设置标签的属性,这个属性在标签库描述文件中定义,如果没有定义属性,就不调用此类方法。

调用doStartTag(),这个方法有两个返回值:1、如果返回的是:EVAL_BODY_INCLUDE, 则继续计算Body。                                                                                                                2、 如果返回的是:SKIP_BODY 就不计算 Body。
       调用 setBodyContent() 设置当前的 BodyContent

调用 doInitBody() ,如果在计算 BodyContent 时需要进行一些初始化,就在这个方法中进行。
       每次计算完BodyTag后调用doAfterBody():1、

如果方法返回 EVAL_BODY_TAG, 继续计算Body, 直到返回 SKIP_BODY;                                                                                        2、如果方法返回 SKIP_BODY 则执行第 8 步;                                                                
       调用doEndTag(),这个方法也有两个返回值:1、 如果返回的是:EVAL_PAGE , 容器将在标签结束时继续计算 JSP 页面其他的部分;                                                                     2、如果返回的是:SKIP_PAGE ,容器将在标签结束时停止计算 JSP 页面其他的部分。
       调用release() 方法释放程序占用的任何资源。




SKIP_BODY隐含0 :跳过了开始和结束标签之间的代码。  

EVAL_BODY_INCLUDE隐含1:将body的内容输出到存在的输出流中
SKIP_PAGE隐含5 : 忽略剩下的页面。
EVAL_PAGE隐含6:继续执行下面的页
---------------------------------------------------------------


doStartTag()和doEndTag()返回值是在Tag Interface里定义的静态int

SKIP_BODY隐含0

Skip body evaluation. Valid return value for doStartTag and doAfterBody. 跳过对body的处理。

就是跳过了开始和结束标签之间的代码。



EVAL_BODY_INCLUDE 隐含1

Evaluate body into existing out stream. Valid return value for doStartTag.

This is an illegal return value for doStartTag when the class implements BodyTag,

since BodyTag implies the creation of a new BodyContent.

将body的内容输出到存在的输出流中。包括是jsp代码,也可以被输出

SKIP_PAGE 隐含5

Skip the rest of the page. Valid return value for doEndTag.

忽略剩下的页面。

EVAL_PAGE 隐含6

Continue evaluating the page. Valid return value for doEndTag().

在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就计算标签的body
若返回SKIP_BODY就不计算标签的body

在doEndTag()方法中,若返回EVAL_PAGE容器在标签结束时继续计算jsp页面的其它部分,
若返回SKIP_PAGE则在标签结束时停止计算jsp页面其他的部分。

当你实现了BodyTag接口时,也就是你进行带body标签的开发时,有doAfterBody()方法。
当返回EVAL_BODY_TAG时,表示继续计算一次BodyTag,直到返回SKIP_BODY才会调用doEndTag()方法在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就计算标签的body
若返回SKIP_BODY就不计算标签的body

这篇关于TagSupport.SKIP_BODY,SKIP_PAGE,EVAL_BODY_INCLUDE,EVAL_BODY_AGAIN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815950

相关文章

Selenium使用Page Object实现页面自动测试

原文转自:https://blog.csdn.net/zhenyu5211314/article/details/13632083 Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变

【Web APIs】DOM 文档对象模型 ⑤ ( 获取特殊元素 | 获取 html 元素 | 获取 body 元素 )

文章目录 一、获取特殊元素1、获取 html 元素2、获取 body 元素3、完整代码示例 本博客相关参考文档 : WebAPIs 参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/APIgetElementById 函数参考文档 : https://developer.mozilla.org/zh-CN/docs/We

json--eval--VM1423:3 Uncaught SyntaxError: Invalid or unexpected token

VM1423:3 Uncaught SyntaxError: Invalid or unexpected token     感觉几天没写了。今天遇到个问题,Java后台返回json格式的数据,但是在用eval转换的时候 报错 js报错,Uncaught SyntaxError: Unexpected token }不知道哪里错,求解答! function processRespo

Windows 与 Linux 下的 PAGE_ALIGN 页面对齐宏引发的 BUG

今天遇到了一个BUG,找了半天才定位到是 PAGE_ALIGN 宏导致的。 这个宏在 Windows 上和 Linux 上的定义不同,才得以引发了这次BUG的发生。   PAGE_ALIGN 的用处是对齐一个页面地址。 先来看看定义: // Windows#define PAGE_ALIGN(Va) ((PVOID)((ULONG_PTR)(Va) & ~(PAGE_SIZE

使用 Page Visibility API 管理页面可见性

什么是 Page Visibility API? Page Visibility API 是 HTML5 提供的一项功能,它可以让开发者确定页面当前是否对用户可见。通过这个 API,你可以检测页面是否被最小化、切换到其他标签页或者隐藏到操作系统的其它窗口后台。这些信息对于实现一些功能(如减少资源消耗、优化后台任务的调度、或在用户离开时暂停视频播放等)是非常有用的。 如何使用 Page Visi

Unable to create the selected preference page解决方法

解决: 将path路径中的%JAVA_HOME%\bin 移动到最前面即可.  问题:  Unable to create the selected preferencepage.  com.avaya.exvantage.ui.interfaces.eclipse.plugin  解决办法:  方式一:  系统级别path高于用户级别pathjdk路径一定在系统path比较保险  方式二:

html5常用标签 body部分(2)包括 表格、图片、链接、视频、表单、以及其他html5新增

<center><h1>*****第五类标记:表格*****</h1></center>  <table width="500px" border="1px">  <caption>标题</caption>  <thead>  <tr>  <th>序号1</th>  <th>序号2</th>  </tr>  </thead>  <tr>

python eval 函数和 json 对象的使用

注意:        1、python 不支持 switch 语句,所以多个条件判断分支的写法只能用 if        2、elif 对应 Java 中的 else if        3、python 编写的程序代码都是自上而下执行,除非代码控制,不然不会改变        4、需要注意代码层级,如果层级不对会报错 文章目录 一、eval 函数二、json 对象的基本应用

登陆Oracle EBS的Form遇到问题Internet Explorer has modified this page to help prevent cross-site scripting

登陆Oracle EBS的Form遇到问题Internet Explorer has modified this page to help prevent cross-site scripting         今天在登陆Oracle EBS的Form 遇到问题Internet Explorer has modified this page to help prevent cross-site

【FPGA】`include 和 verilog header的区别

作用域区别 include 是把文件 粘贴到当前位置,作用域也仅限当前文件header 作用域是整个工程 .f添加方式的区别 include “xxx.v” 写在当前文件中,.f文件无需另外添加header文件用+incdir+./…/pathname/ fpga添加方式的区别 include “xxx.v” 写在当前文件中,.f文件无需另外添加header文件需要设置filetype