自定义标签 (choose)

因为有3个标签,所以写3个标签处理器类

1.ChooseTag

public class ChooseTag extends SimpleTagSupport {
  //定义一个标记,用于控制跳转去向.
public Boolean tag = true;public Boolean getTag() {return tag;}public void setTag(Boolean tag) {this.tag = tag;}@Overridepublic void doTag() throws JspException, IOException {
     //获取标签体JspFragment jspBody
= this.getJspBody();
     //因为第一个是父标签,所以直接执行就好了,不用处理.jspBody.invoke(
null);super.doTag();}}

2.WhenTag

public class WhenTag extends SimpleTagSupport {
  //用来接收判断条件
public Boolean test;public Boolean getTest() {return test;}public void setTest(Boolean test) {this.test = test;}@Overridepublic void doTag() throws JspException, IOException {
     //获取父标签,并且获取他的tag的值ChooseTag chooseTag
= (ChooseTag) this.getParent();Boolean tag = chooseTag.getTag();
     //判断tag的值.如果test也成立,就执行
if (tag && this.getTest()) {chooseTag.setTag(false);
        //获取标签体JspFragment jspBody
= this.getJspBody();
       //执行标签体jspBody.invoke(
null);}super.doTag();} }

3.OtherwiseTag

public class OtherwiseTag extends SimpleTagSupport{@Overridepublic void doTag() throws JspException, IOException {ChooseTag  chooseTag = (ChooseTag) this.getParent();Boolean tag = chooseTag.getTag();
     //如果tag为true则说明没有进when
if(tag){JspFragment jspBody = this.getJspBody();jspBody.invoke(null);}super.doTag();}}

 

写tld文件

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib><tlibversion>1.2</tlibversion><jspversion>1.1</jspversion><shortname>mylib</shortname><uri>http://www.fz.song.myLib</uri><tag><name>choose</name><tagclass>fz.song.tag.ifelse.ChooseTag</tagclass><bodycontent>scriptless</bodycontent>
     </tag><tag><name>when</name><tagclass>fz.song.tag.ifelse.WhenTag</tagclass><bodycontent>scriptless</bodycontent><attribute>
        <!--属性名--><name>test</name>
        <!--是否必须--><required>true</required>
        <!--是否使用el--><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>otherwise</name><tagclass>fz.song.tag.ifelse.OtherwiseTag</tagclass><bodycontent>scriptless</bodycontent></tag><tag><name>foreach</name><tagclass>fz.song.tag.foreach.ForeachTag</tagclass><bodycontent>scriptless</bodycontent><attribute><name>items</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><required>true</required><rtexprvalue>false</rtexprvalue></attribute></tag></taglib>

 

 

jsp页面

<%@ taglib uri="http://www.fz.song.myLib" prefix="x"%><x:choose><x:when test="${10>1}">true</x:when><x:otherwise>false</x:otherwise></x:choose>

 

补充

<body-content></body-content>中可以写入的参数有四种

① empty

即标记体为空

② scriptless

这个标记不能有脚本元素,但可以有模板文本和EL, 还可以是定制和标准动作

③ tagdependent

标记体要看做是纯文本,所以不会计算EL,也不会出发标记/动作

④ JSP

能放在JSP中的东西都能放在这个标记体中

转载于:https://www.cnblogs.com/songfahzun/p/4918925.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机考上研究生暑假去哪里实习_浅谈化工与计算机行业

本人化工专业&#xff0c;毕业转行计算机。结合四年化工的学习以及互联网行业实习工作的经历&#xff0c;浅谈一下这两个行业。大二暑假到连云港一家民营炼化企业参观实习。该家企业给出的工资是三千五&#xff0c;四班两倒&#xff0c;可以住连云港的人才公寓&#xff0c;上下…

ajax status php,解决laravel 出现ajax请求419(unknown status)的问题

如下所示&#xff1a;这个是因为laravel自带csrf验证的问题解决方法方法一&#xff1a;去关掉laravel的csrf验证&#xff0c;但这个人不建议&#xff0c;方法也不写出来了。方法二&#xff1a;把该接口写到api.php上就好了方法三&#xff1a;首先在页面加上然后请求的在header里…

string 转比较运算符_运算符

1、概述算术运算符 - * /基本运算算术运算符%取模&#xff0c;取余数&#xff0c;计算整除算术运算符 --自增 自减比较运算符 !相等比较 不等比较逻辑运算符&& &逻辑与 短路与&#xff08;同真为真&#xff09;逻辑运算符|| |逻辑或 短路或&#xff08;一真则真&am…

神舟战神换cpu教程_神舟将十代i5称为“神U出世”?聊聊到底有哪些优势

在各个品牌大力的宣传之下&#xff0c;消费者对于笔记本电脑乃至各种数码硬件的要求都越来越高。既要好的处理器、显卡等性能配置&#xff0c;又要好的屏幕&#xff0c;甚至还得低定价&#xff0c;这就产生一种鱼与熊掌不可兼得的感觉了。就在今年的表白日&#xff0c;神舟电脑…

Oracle数据库更新时间的SQL语句

---Oracle数据库更新时间字段数据时的sql语句---格式化时间插入update t_user u set u.namepipi,u.modifytimeto_date(2015-10-07 00:00:00,YYYY-MM-DD HH24:MI:SS) where u.uid 11111---使用数据库系统当前时间update t_user u set u.namepipi,u.modifytimesysdate where u.u…

服务器系统杀毒系统崩溃怎么恢复,系统崩溃是什么原因导致的

大家在使用电脑的时候&#xff0c;经常都是需要安装一些软件和其他东西的。但是在安装软件的时候&#xff0c;很容易让一些病毒侵入电脑。一旦病毒侵入了电脑&#xff0c;就很容易让电脑系统崩溃。那么系统崩溃是什么原因导致的呢&#xff1f;下面就来告诉大家系统崩溃的原因及…

python argument list too long_间歇“OSError:[Errno 7]参数列表太长”,命令短(~125个字符)...

在Linux上的apache2mod_wsgi下运行的代码有时会产生以下输出。在notes.pycmd_list [abc_generate_pdf,--cdb-url-prefix, model.config(cdb_url_prefix),--request-cid, request_cid,]log.info("About to run: {!r}".format(cmd_list))subprocess.Popen(cmd_list)..…

atom配置python环境_python与excel有段情之二:python的安装和环境配置

索引python与excel有段情之一&#xff1a;前述python与excel有段情之二&#xff1a;python的安装和环境配置python与excel有段情之三&#xff1a;python编程前的准备工作和基本概念python与excel有段情之四&#xff1a;案例1.把多excel表抽数生成新excel表python与excel有段情之…

Scrapy--1安装和运行

1.Scrapy安装问题 一开始是按照官方文档上直接用pip安装的&#xff0c;创建项目的时候并没有报错&#xff0c; 然而在运行 scrapy crawl dmoz 的时候错误百粗/(ㄒoㄒ)/~~比如&#xff1a; ImportError: No module named _cffi_backend Unhandled error in Deferred 等等,发现是…

x86服务器当虚拟化的存储,龙存科技-软件定义数据中心产品提供商

一、应用背景服务器虚拟化技术是云计算的核心技术&#xff0c;是将系统进行虚拟化应用于服务器之上的技术。面向应用集中化处理&#xff0c;能最大的程度上利用硬件资源&#xff0c;并且实现灵活分配。虚拟化技术是将计算机底层的硬件功能的模拟&#xff0c;需要复杂的语句和机…

mysql 参照完整性规则_mysql参照完整性

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼MYSQL支持数据库的参照完整性约束吗&#xff1f;有四个表&#xff1a;表一的主键是的表二外键表二的主键是表三的外键表三的主键是表四的外键请问&#xff1a;如果&#xff1a;删除表一表2 3 4 会自动删除吗&#xff1f;----------…

使用python开发网页游戏_不敢想!不敢想!我用Python自动玩转2048游戏

近来在折腾selenium自动化, 感觉配合爬虫很有意思, 大多数以前难以模拟登录的网站都可以爬了&#xff0c;折腾了这么久,于是想自动玩个2048游戏&#xff01;嘿嘿, 我是一个不擅长玩游戏的人, 以前玩2048就经常得了很低的分&#xff0c;每每想起都”痛心疾首”, 所以我打算拿204…

【飞谷六期】爬虫项目4

经过了几天的摸索&#xff0c;照猫画虎的把爬虫的部分做完了。 但是很多原理性的东西都不是很理解&#xff0c;就是照着抄的&#xff0c;还需要继续学习。 看这个目录结构&#xff0c;只看.py的文件&#xff0c;.pyc的文件是运行的时候生成的不管它。 items.py:定义想要导出的数…

can通讯bdc_宝马总线K-CAN3和K-CAN4常见案例

K-CAN31.G30/38 照明系统报警.诊断&#xff1a;左侧大灯模块K-CAN3通讯故障。故障位置&#xff1a;左前大灯插头附近的K-CAN 3线束与左前支撑架之间有磨损2.G38 右侧大灯照明系统故障.诊断&#xff1a;右侧大灯模块上面K-CAN3的PIN脚异常&#xff0c;导致间歇性短路。故障位置&…

activex控件 新对象 ocx 初始化_Office已经支持64位的树控件Treeview了

之前在使用Office365时发现微软其实已经悄悄地开始提供了64位的Treeview树控件&#xff0c;只是并没有公开宣布。当时是在一个网友的电脑上说他可以在64位Excel中可直接使用64位树控件&#xff0c;当时以为他看到的只是一个假的树控件&#xff0c;后来经过远程他的电脑&#xf…

彼得原理(The Peter Principle)

一、 关于彼得原理(The Peter Principle) 彼得原理&#xff08;The Peter Principle&#xff09;是由美国管理学家劳伦斯彼得&#xff08;Laurence&#xff0e;J&#xff0e;Peter&#xff09;根据千百个有关组织中不能胜任的失败实例的分析而归纳出来的并于1960年在美国联邦出…

腾达ac5第三方固件_腾达AC9官方固件增加KoolProxy版

添加脚本cd squashfs-rootvim ./etc_ro/koolproxy.sh内容为!/bin/shmkdir -p /tmp/koolproxy/data/rulesmkdir -p /tmp/koolproxy/data/privatemkdir -p /tmp/koolproxy/data/certswget_ok"0"while [ "$wget_ok" "0" ]dowget http://koolproxy-…

python人工智能面试题_AI笔试面试题库-Python题目解析4

1 、请用 Python 手写实现插入排序。 解析&#xff1a; 插入排序&#xff08; Insertion Sort &#xff09;的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c; 在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。 算法执行步骤&#xff1a; &…

mysql 获取昨天凌晨_MySQL慢日志体系建设

慢查询日志是MySQL提供的一种日志记录&#xff0c;用来记录在MySQL中响应时间超过阈值的SQL语句&#xff0c;在很大程度上会影响数据库整体的性能&#xff0c;是MySQL优化的一个重要方向。在58的云DB平台建设中&#xff0c;慢SQL系统作为一个非常重要功能模块&#xff0c;不仅是…

python关键词提取_python对文件中的关键词查找替换,实现自动获取配置

1、目的 想对update_variable.py文件中的配置进行修改&#xff0c;数据通过系统接口自动获取 update_variable.py my_name‘null‘ my_age18 2、代码 update_file.py # namephyger # line‘my name: {name}‘ # newline.replace(‘{name}‘,name) # print(new) # cur_abspathos…