JSP页面如何访问标签中定义的变量-使用实现

本文介绍了如何在JSP页面中访问自定义标签定义的变量。通过创建标签类并定义TLD文件,我们可以根据标签的属性动态设置变量名,如在jsp页面中使用<testvar:testvar id="message"/>。在运行时,能够成功打印出标签类中变量message的值,实现了变量的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先定义标签类:

其中message为变量名

package testtag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class TestVar extends TagSupport {

    @Override
    
public int doStartTag() throws JspException {
        
try{
            JspWriter out
=pageContext.getOut();
            out.println(
"in doStartTag");
            pageContext.setAttribute(
"message""hello");
        }
catch(Exception e){
            e.printStackTrace();
        }

        
return(SKIP_BODY);
    }

   
}

 定义TLD文件

其中<name-from-attribute>id</name-from-attribute>说明变量名可分局自定义标签的id属性动态设置

 <taglib>
    
<tlib-version>1.0</tlib-version>
     
<jsp-version>1.2</jsp-version>
      
<short-name>c_rt</short-name>
      
<uri>http://fff/t</uri>
      
<display-name>JSTL core RT</display-name>
       
<description>JSTL 1.0 core library</description>
     
   
<tag>
    
<name>testvar</name>
    
<tag-class>testtag.TestVar</tag-class>
    
<body-content>empty</body-content>
    
<description>
      test var
    
</description>
    
<variable>
      
<name-from-attribute>id</name-from-attribute>
      
<variable-class>String</variable-class>
      
<declare>true</declare>
      
<scope>AT_BEGIN</scope>
    
</variable>
    
<attribute>
      
<name>id</name>
      
<required>true</required>
    
</attribute>
  
</tag>
  
</taglib>


jsp:

此处<testvar:testvar id="message"/>设定变量名称为message

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding
="GB18030"
%>
    
<%@ taglib uri="testtag" prefix="testvar" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<testvar:testvar id="message"/>
${message}
</body>
</html>

 

运行结果如下:

in doStartTag hello ,可见,可以打印出在标签类中变量message的内容hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值