动态自定义标签属性页面(Tomcat 9)

news/2025/2/26 8:27:01

============java文件 ,包名org.rain.tag

package org.rain.tag;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.DynamicAttributes;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SmallRainDynamicTAG extends SimpleTagSupport implements DynamicAttributes {

private Map<String, Object> smallRianDynamicBeans = new HashMap<String, Object>();

@Override

public void setDynamicAttribute(String smallRainURI, String smallRainTAGName, Object smallRainTAGNameValue)

throws JspException {

smallRianDynamicBeans.put(smallRainTAGName, smallRainTAGNameValue);

}

@Override

public void doTag() throws JspException, IOException {

StringBuilder smallRainTagOut = new StringBuilder();

smallRianDynamicBeans.forEach((tagName, tagValue) ->

smallRainTagOut.append("<b>属性名:</b>" + tagName + " <b>属性值:</b>"+tagValue)

.append("<br>"));

getJspContext().getOut().print(smallRainTagOut.toString());

}

}

=====================TLD文件,放在WEB-INF\tld\rain.tld,名称rain.tld

<?xml version="1.0" encoding="UTF-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"

version="2.1">

<tlib-version>1.0</tlib-version>

<short-name>rain</short-name>

<tag>

<name>SmallRainDynamicTAG</name>

<tag-class>org.rain.tag.SmallRainDynamicTAG</tag-class>

<body-content>empty</body-content>

<dynamic-attributes>true</dynamic-attributes>

</tag>

</taglib>

=========jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page language="java" %>

<%@ taglib uri="/web-rain/welcome.tld" prefix="rain"%>

<html>

<body>

<head>

<title>动态自定义标签属性页面</title>

</head>

<h3> 晓雨 动态自定义标签属性页面</h3> 可以更改JSP标签属性和值;<br>

例如修改标签 《rain:SmallRainDynamicTAG smallRainSchool="大学" smallRainHome="地址" 》<br>

添加标签属性和值 smallRainHomeSelf="中国"

<br>

<br>

<br>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<rain:SmallRainDynamicTAG smallRainSchool="大学" smallRainHome="地址"/>

</table>

</body>

</html>


http://www.niftyadmin.cn/n/5868385.html

相关文章

sage-huga改进SITAN

Sage-Husa自适应滤波算法 Sage-Husa自适应滤波算法是一种在递推滤波过程中实时估计和修正系统噪声和观测噪声统计特性的算法&#xff0c;从而降低系统模型误差&#xff0c;提高滤波精度。该算法基于卡尔曼滤波&#xff0c;并通过自适应调整噪声协方差矩阵来优化滤波效果。 算…

面向对象程序设计-实验十一

&#xff08;给出题目描述&#xff09; 6-1 时钟模拟 代码清单&#xff1a; #include<iostream> using namespace std; class MyTime { private: int m_h; int m_m; int m_s; public: MyTime(int h, int m, int s) { m_h h; m_m m; m_s s; } MyTime() { this-&…

JVM之JVM的组成

Java 虚拟机&#xff08;JVM&#xff09;是 Java 程序的运行核心&#xff0c;它主要由类加载系统、运行时数据区、执行引擎和本地方法接口这几个关键部分组成。 类加载系统&#xff08;Class Loading System&#xff09; 类加载系统负责在程序运行时动态地将 Java 类加载到 J…

375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码

一:AlarmFaceInfo的应用 让我帮你解析这个lambda表达式的实现: // ...................... .h ...........................// struct RsMsgPushTask_S : public Task{AlarmType_E mainAlarmType;unsigned int subAlarmType;DateTime alarmTime

STM32CUBEIDE FreeRTOS操作教程(十三):task api 任务访问函数

STM32CUBEIDE FreeRTOS操作教程&#xff08;十三&#xff09;&#xff1a;task api 任务访问函数 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板…

Spring Boot集成RocketMQ:真实项目应用场景

第一部分&#xff1a;基础配置与简单示例 1. 项目初始化 使用Spring Boot创建一个项目&#xff0c;添加RocketMQ依赖。 POM依赖&#xff08;Maven&#xff09;&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spr…

DeepSeek回答:AI时代Go语言学习路线

最近有小伙伴经常会问&#xff1a;**该如何学习入门Go语言&#xff1f;怎样提升Go语言Coding水平&#xff1f;**这篇文章我们就使用DeepSeek来梳理下Go语言在AI时代的学习路线。 向DeepSeek提问的问题原文&#xff1a; 你现在是一名资深的Go语言工程师&#xff0c;精通Go语言并…

MySQL索引失效

MySQL索引失效会导致查询性能下降&#xff0c;常见原因及解决方案如下&#xff1a; 一、使用OR条件 原因&#xff1a;当OR条件中有一个列没有索引时&#xff0c;索引可能失效 解决方法&#xff1a;确保OR条件中的所有列都有索引&#xff0c;或使用UNION替代OR -- 不推荐 SE…