`

JSP指令元素-tablib

    博客分类:
  • JSP
阅读更多
1Tablib指令简介:

Tablib指令表示定义一个标签库以及其自定义标签的前缀,其语法格式为:

<%@taglib prefix="tagPrefix" uri="URIToTagLibrary" tagdir="" %>

其中:prefix表示自定义标签之前的前缀,如<c:if>当中的c就是通过这个属性定义的,如果不定义系统中是会报错的。

uri表示URIUniform Resource Identifier)根据标签的前缀对自定义的标签进行唯一地命名(或者说类库的地址),它可以是URLUniform Resource Locator)或URNUniform Resource Name),一个相对或绝对的路径。

tagdir: 区别于uri属性,uri属性告知的是具体TLD标签文件的目录。要是想使用一个没有创建TLD的标签文件,你必须将这个标签文件保存在WEB-INF/tags目录下,这样就告诉容器在这个目录下所找到的所有标签文件都属于同一个标签库。

(具体可以参考:http://toyota2006.iteye.com/blog/26575

需要注意的是:在使用自定义标签之前必须使用“<%@taglib  %>”指令将标签引入到页面,而且可以在一个页面中多次使用,但是前缀必须唯一。

 

2、在项目中导入或使用使用标签:

a、导入系统中已经存在的标签,如常用的c标签:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

b、导入自定义的标签:

首先需要自定义一个java类(UFunction.java),用来实现自定义标签的各个方法。

package com.wjl.taglib;

/**
 * 定义El自定义函数来截取字符串
 * */
public class UFunction {
	/**
	 * 获取一个字符串的长度
	 * @param str 需要进行长度计算的字符串
	 * @return int 字符串的长度
	 * */
	public static int getLen(String str){
		return str.length();//调用String的length方法获取当前字符串长度
	}
	/**
	 * 截取字符串 
	 * @param str:需要进行截取的字符串
	 * @param start:开始截取的位置
	 * @param end:结束截取的位置
	 * @return String:按照要求截取之后的结果
	 * */
	public static String substr(String str,int start,int end){
		return str.substring(start,end);//调用String的substring方法进行截取
	}
	/**
	 * 两数相除获取整数结果
	 * @param first:除数
	 * @param second:被除数
	 * @return int:两数相除获取整数结果
	 * */
	public static int getResult(int first,int second){
		return first/second;//两数相除(暂时不作被除数为0的考虑)
	}
}

然后在WEB-INF下面建立一个tld(myTag.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>len</short-name>
       <function>
       		<description>get the string length</description><!-- 对这个EL方法进行描述 -->
			<name>getLen</name><!-- 调用El方法的名字 -->
			<function-class>com.wjl.taglib.UFunction</function-class><!-- 所使用的类 -->
			<function-signature>int getLen(java.lang.String)</function-signature>
			<example>${len:getLen(str)}</example><!-- 举例 -->      
       </function>
       
       <function>
       		<description>substring</description>
       		<name>substr</name>
       		<function-class>com.wjl.taglib.UFunction</function-class>
       		<function-signature>java.lang.String substr(java.lang.String,int,int)</function-signature>
       </function>
       
       <function>
       		<description>getResult</description>
       		<name>getResult</name>
       		<function-class>com.wjl.taglib.UFunction</function-class>
       		<function-signature>int getResult(int,int)</function-signature>
       </function>
</taglib>

最后新建一个jsp页面进行测试:

<body>
    <c:set var="str"  value="自定义函数,做一个截取字符串长度的测试"></c:set>
    字符串内容为:${str }<br /><br />
    字符串长度为:${myTag:getLen(str)}<br /><br />
    字符串截取前五个字符串:${myTag:substr(str,0,5)}<br /><br />
    10除以2的结果为:${myTag:getResult(10,2)}<br /><br />
    
    <!-- 若是字符过长只显示前10,后面的用省略号代替 -->
     <c:choose>
     	<c:when test="${myTag:getLen(str)>10}">
     		<c:out value="${myTag:substr(str,0,10)}......"></c:out>
     	</c:when>
     	<c:otherwise>
     		<c:out value="${str}"></c:out>
     	</c:otherwise>
     </c:choose>
</body>

注意:记得导入标签库。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
<%@taglib prefix="myTag" uri="/WEB-INF/myTag.tld"  %>

也可以参考我的另一篇博文:JSTL截取字符串

分享到:
评论

相关推荐

    开源项目-agrison-go-tablib.zip

    《Go语言中的Tabular Dataset库:agrison-go-tablib》 在编程领域,数据处理是一项至关重要的任务,尤其是在大数据分析、报表生成以及机器学习等领域。Python的tablib库因其强大的表格数据操作能力而广受赞誉,它...

    java-pager-tablib.rar_pager

    `pager-tablib`库通常与Servlet容器(如Tomcat、Jetty等)以及Java服务器页面(JSP)和JavaServer Faces (JSF)框架一起使用。这个库提供了自定义标签,可以直接在JSP页面上嵌入,通过简单的配置就能实现复杂的分页...

    Python库 | cliff-tablib-2.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:cliff-tablib-2.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python-cliff-tablib-1.1-3.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    pager-tablib-2.0 中文问题

    NULL 博文链接:https://dql188.iteye.com/blog/376280

    python-tablib-0.10.0-1.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    tablib-0.11.5.tar.gz

    《Python表格处理库Tablib详解》 在Python编程领域,数据处理是不可或缺的一部分,而Tablib则是这样一个强大的库,专为处理和交换结构化数据而设计。本文将深入探讨Tablib 0.11.5版本,理解其核心功能、使用方法...

    pager-tablib

    强大,高效的分页标签

    tablib分页框架

    在需要使用分页功能的JSP页面中,通过`taglib`指令引入Tablib的标签库: ```jsp &lt;%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %&gt; ``` 这一行代码允许开发者在JSP页面中使用`pg:`...

    Struts2 标签库 [Tablib]

    其中,Struts2的标签库[Tablib]是其核心特性之一,为开发者提供了丰富的JSP标签,使得在视图层的构建更加便捷、高效。这个标签库包括了用于数据展示、表单处理、错误处理等多个方面的组件,大大提高了开发者的生产力...

    tablib-0.12.1.tar.gz

    《Python中的tablib库详解与应用》 在Python编程领域,数据处理是不可或缺的一部分,而tablib库就是其中一颗璀璨的明星。它由requests库的作者Kenneth Reitz维护,适用于Python 2到Python 3的跨版本兼容,提供了一...

    PyPI 官网下载 | pyramid_tablib-0.2.tar.gz

    标题 "PyPI 官网下载 | pyramid_tablib-0.2.tar.gz" 指的是在Python的包索引服务PyPI(Python Package Index)上下载的一个名为`pyramid_tablib`的软件包,版本为0.2。该包是以`.tar.gz`格式提供的,这是一种常见的...

    【转】Struts2 标签库 [Tablib]

    -- 表单元素 --&gt; ``` 8. `s:if` 和 `s:else`:条件判断标签,用于控制页面的逻辑显示。 ```jsp 欢迎管理员! 欢迎普通用户! ``` 9. `s:actionerror` 和 `s:fielderror`:用于显示错误信息,前者显示全局...

    Struts2_Tablib.jar 能用的标签库

    2. **数据展示**:`s:iterator`标签遍历集合并渲染每个元素,通常与`s:property`结合使用。 3. **国际化**:`s:text`标签用于显示多语言文本,支持动态加载语言资源。 4. **动作调用**:`s:action`标签可以执行一个...

    tablib‑0.13.0‑py2.py3‑none‑any.whl

    python离线安装包,亲测可用

    jsonp异步

    1. **请求发起**:客户端(通常是浏览器中的JavaScript代码)创建一个`&lt;script&gt;`元素,并设置其`src`属性为服务器的API接口地址,同时这个地址通常会带有回调函数名(由客户端指定)作为查询参数。 2. **服务器响应...

    与表格格式数据有关的Python库Tablib.zip

    Tablib 是一个与表格格式数据有关的 Python 库,允许导入、导出、管理表格格式数据。特性  1 导出/导入格式Excel (Sets Books)JSON (Sets Books)YAML (Sets Books)HTML (Sets)TSV (Sets)CSV (Sets)  2 数据操作...

    struts2开发 tablib.rar

    在本压缩包“tablib.rar”中,虽然没有提供具体的文件内容,但从文件名我们可以推测这可能是一个Eclipse或MyEclipse项目的结构。 1. **.project**:这是Eclipse项目配置文件,包含了项目的基本信息,如项目类型、...

Global site tag (gtag.js) - Google Analytics