开发者社区> 郭璞> 正文

JSP自定义简单标签入门之带有属性

简介: 上面写的那个简单标签来控制页面中标签内容的重复次数是固定的,这就是权限“写死了”,这是非常不好的行为,因为其灵活性太差。所以下面就介绍一种使用属性来控制标签内容输出次数的方法。 准备工作 创建实现了SimpleTag接口的实现类(或者是继承了SimpleTagSupport类的子类) 在类中为相应的属性字段添加setter方法,注意字段名称一定要一致。
+关注继续查看

上面写的那个简单标签来控制页面中标签内容的重复次数是固定的,这就是权限“写死了”,这是非常不好的行为,因为其灵活性太差。所以下面就介绍一种使用属性来控制标签内容输出次数的方法。


准备工作

  • 创建实现了SimpleTag接口的实现类(或者是继承了SimpleTagSupport类的子类)
  • 在类中为相应的属性字段添加setter方法,注意字段名称一定要一致。否则会出错滴
  • 在tld文件中进行相关约束项的声明,不同于不带属性的简单标签的声明方式,这里多了一个attribute子标签,内有name,required(此属性是否必须存在),rtexprvalue(是否可以使用表达式,为了与EL表达式配合,一般会为true),
  • 最后就是在jsp页面中进行taglib命令的声明,以及标签的使用了。

小案例分析与实现


  • 第一步:创建类,字段setter设置:
package web.simpletag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

/**
 * 通过属性来控制标签体的执行次数
 * @author Summer
 *
 */
public class WithAttribute extends SimpleTagSupport {

    private int count;//用于操作maniplate次数的字段

    public void setCount(int count) {
        this.count = count;
    }

    @Override
    public void doTag() throws JspException, IOException {

        for(int i=0;i<count; i++){
            this.getJspBody().invoke(null);
        }
    }



}

  • 第二步:tld声明的书写:

    <!-- 带有属性的的自定义简单标签 -->
    <tag>
        <name>WithAttribute</name>
        <tag-class>web.simpletag.WithAttribute</tag-class>
        <body-content>scriptless</body-content>

        <attribute>
            <name>count</name>
            <required>true</required>
            <!-- 属性值是否为表达式?一般是EL表达式 -->
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

  • 第三步:jsp页面的生命与使用
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="/simplesummer" prefix="summer"%>
<!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=UTF-8">
<title>使用属性来控制标签内容的输出次数的自定义简单标签的测试页面</title>
</head>
<body>

    <summer:WithAttribute count="7">
        I am Summer !!!<BR>
    </summer:WithAttribute>

</body>
</html>

  • 在jsp页面中,我们就可以手动的设置count属性的值来操作这个自定义标签的重复次数了。

  • 测试结果展示:

    这里写图片描述

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android 用属性动画自定义view的渐变背景
自定义view渐变背景,同时监听手势自动生成小圆球。   宿主Activity如下:   package com.edaixi.tempbak; import java.util.ArrayList; import android.
718 0
Android 自定义Toast,并且勘误Android工具类里面的ToastUtils
前言 相信大部分仁兄在使用系统Toast的时候,都感觉不太尽如人意,因为系统Toast显示的位置比较固定,并且字体颜色等会跟随系统版本变化,那么能不能自己写一个呢,答案是当然的。
1085 0
JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】
什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的显示! 为什么要使用EL表达式? 为什么要使用EL表达式,我们先来看一下没有EL表达式是怎么样读取对象数据的吧! 在1.
1180 0
自定义HTML标签属性
为HTML元素添加一自定义的属性非常方便,只须将其加到尖括号中即可,与内置属性地位相等。 如我们要为TextBox元素添加属性idvalue:   只须在原来的控件后面加上:idvalue=”…”,成为:   idvalue即可正式成为txtInput的属性,地位与其他属性相等。
815 0
AngularJS 自定义服务
angular中的service叫做服务,用来封装常用的函数。就像java中的Util类一样。 定义 以PathUtil服务为例,定义见下: 'use strict'; /** * url的前缀固定,后缀会变,所以封装成服务,减少代码量 */ angular.module('myApp') .service('PathUtil', function PathUtil() {
1112 0
全面入门jQuery最佳实践(二)-jQuery的属性与样式
1 .attr()与.removeAttr() 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息。如:在img元素中,src就是元素的特性,用来标记图片的地址。
1013 0
AngularJS-自定义指令
AngularJS的内置指令总归是有限的,特别是我们需要操纵dom时,就需要自己编写directive。有这样一个场景,管理系统中切换状态,见图1. 图1 切换状态时的确认框效果 那么就可以定义指令“ng-confirm-click”,js: html: &lt;td&gt; &lt;a ctrip-confirm-click ng-show="item.statu
868 0
JSP自定义标签之简单标签入门
在sun官方文档上有下面这样一段话。 官方文档声明 public interface SimpleTag extends JspTag Interface for defining Simple Tag Handlers.
767 0
+关注
郭璞
一切就交给时间,它会给我答案。
368
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载