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

相关文章

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

vue中路由管理(vue-router,page)使用总结

现在的项目都以模块化的方式去开发,所以在这样的开发模式下,如何更好的去管理路由是开发中所需要考虑的重点,幸运的是当前的开发中已经有了成熟的中间件去管理,我们只需要用就可以了 下面是我在学习vue-router的时候在原来基础上修改出来的demo,也是为了有助于对vue-router的理解 首先理解下vue官网的一个示例demo https://jsfiddle.net/yyx990803/x

code: 400, msg: Required request body is missing 错误解决

引起这个错误的原因是,请求参数按照get方式给。 应该给json字符串才对 补充: 1. @RequestBody String resource 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List<String> indexCodes=(List<String>)json.

python+selenium2学习笔记unittest-04装饰器skip用法

在运行测试用例时,有时需跳过或判断用例时,可以用装饰器来实现 主要的几个方法就是下面的这几种 import unittestclass test(unittest.TestCase):def setUp(self):pass@unittest.skip('跳过')def test_01(self):print("直接跳过")@unittest.skipIf(3>2,'当条件为TRUE跳过')

构建现代API:FastAPI中Query与Body参数的最佳搭配

在FastAPI中,Query 和 Body 是两种不同的依赖注入器,它们的应用场景取决于你的具体需求。以下是它们各自常见的使用场景: Query 参数 使用场景: 当你需要从URL中获取一些简单的参数时,例如过滤、排序、分页等。 当数据量不大,且可以作为URL的一部分安全传输时。当数据不需要复杂的结构时。 Body 参数 使用场景: 当你需要发送较为复杂的数据结构时,例如包含多个字段

兔子-(PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recommended: 'CGP'

由于在PHP最新的版本中增加了一个配置项目“request_order”,默认值为“GP”,这个存在一定的安全风险。这里我们建议用户将配置更改为“CGP” 可以在php的安装目录下找到php.ini配置目录,找到下面选项: request_order = "GP"  更改为 request_order = "CGP"   重启服务器后即可。 此

2、#include和#define

#include和#define 一、#include二、#define宏定义1、宏变量2、宏函数 一、#include #include是预处理指令,会将头文件直接替换到文件中。 // hello.hvoid foo() {int c = 0;int d = 1;}// hello.cpp#include "hello.h"int main() {int a =

python eval报错 SyntaxError: invalid token

a = eval(startTime)   File "<string>", line 1     2019-01-02 11:00:00               ^ SyntaxError: invalid token startTime = '2019-01-02 11:00:00'a = eval(startTime) 具体内容如上: 后来发现,在eval中的

word2vec 两个模型,两个加速方法 负采样加速Skip-gram模型 层序Softmax加速CBOW模型 item2vec 双塔模型 (DSSM双塔模型)

推荐领域(DSSM双塔模型): https://www.cnblogs.com/wilson0068/p/12881258.html   word2vec  word2vec笔记和实现 理解 Word2Vec 之 Skip-Gram 模型 上面这两个链接能让你彻底明白word2vec,不要搞什么公式,看完也是不知所云,也没说到本质. 目前用的比较多的都是Skip-gram模型 Go

#include <iostream>介绍

在C++编程中,#include <iostream> 是一个非常重要的预处理指令,用于引入输入输出流库。以下是对 #include <iostream> 的详细介绍: 1. 作用 #include <iostream> 指令的主要作用是使程序能够使用标准输入输出流的功能。它包含了定义输入输出流的类和函数,允许程序进行数据的输入和输出操作。 2. 主要功能 引入 <iostream> 后,