JSTL基础 SimpleTagSupport 自定义标签 带有属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL基础 SimpleTagSupport 自定义标签 带有属性相关的知识,希望对你有一定的参考价值。
礼悟:
好好学习合思考,尊师重道存感恩。叶见寻根三返一,江河湖海同一体。
虚怀若谷良心主,愿行无悔给最苦。读书锻炼强身心,诚劝且行且珍惜。
javaEE:7
javaSE:1.8
JSTL:1.2.2
server:tomcat 8.5
browser:Chrome/Firefox
os:windows7 x64
ide:MyEclipse 2017
项目结构
jizuiku-tags.tld
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>jzk</short-name> <uri>http://www.jizuiku.com/tags/1.0</uri> <!-- 配置标签 --> <tag> <name>MyTag</name><!-- 指定当前标签的名称 --> <tag-class>com.jizuiku.tag.MyTag</tag-class><!-- 当前标签的处理类 --> <body-content>scriptless</body-content><!-- 指定标签体的类型 EL表达式 --> <!-- 部署属性 --> <attribute> <name>value</name> <required>true</required> <!-- 是必须要给的属性 --> <rtexprvalue>true</rtexprvalue><!-- rt:runtime expr:expression value:value --> <!-- 属性赋值可以是EL表达式 --> </attribute> </tag> </taglib>
MyTag.java
package com.jizuiku.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; /** * * * @author 博客园-给最苦 * @version V2017.12.04 */ public class MyTag extends SimpleTagSupport { private boolean value = false; /* * 在doTag之前被tomcat调用 * getXxx就不用写了,请问为什么? * */ public void setValue(boolean value) { this.value = value; } @Override public void doTag() throws JspException, IOException { // TODO Auto-generated method stub if (value) { // 执行标签体,参数是null 指的是 输出流是当前页面的out this.getJspBody().invoke(null); this.getJspContext().getOut().print("居然是真"); } else { // 执行标签体,参数是null 指的是 输出流是当前页面的out this.getJspBody().invoke(null); this.getJspContext().getOut().print("居然是假"); } } }
MyJsp.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="j" uri="/WEB-INF/tlds/jizuiku-tags.tld"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP ‘MyJsp.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <!-- 给最苦 没有起好名字,完全不能见名知意呀!!! --> <j:MyTag value="${empty param.name }"> 呵呵,这里必须要写一些内容。否则就会抛出空指针异常<br> </j:MyTag> </body> </html>
浏览器查看
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。
以上是关于JSTL基础 SimpleTagSupport 自定义标签 带有属性的主要内容,如果未能解决你的问题,请参考以下文章
JSTL基础 SimpleTagSupport 自定义标签 标签体scriptless