在目录:’Web服务器\WEB-INF\tags‘ 下创建存放xxx.tag的tag文件
demo:
jsp页面:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!--
使用<taglib>指令标记引入该Web服务目录下的标记库,只有这样,JSP页面才可以使用Tag标记调用相应的Tag文件。<taglib>指令的格式如下:
<%@ taglib tagdir="自定义标记库的位置" prefix="前缀">
-->
<%@taglib tagdir="/WEB-INF/tags" prefix="beijing" %>
<%@taglib tagdir="/WEB-INF/tags/geng" prefix="dalian" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body bgcolor="cyan">
<h3>以下是调用Tag文件的效果:</h3>
<beijing:AddSum />
<h3>以下是调用Tag文件的效果:</h3>
<dalian:EvenSum />
</body>
</html>
tag文件
<%@ tag language="java" pageEncoding="UTF-8"%>
<p>这是一个Tag文件,负责计算1~100内的奇数之和:</p>
<% int sum=0, i=1;
for(i=1;i<=100;i++)
{ if(i%2==1)
sum=sum+i;
}
out.println(sum);
%>
<%@ tag language="java" pageEncoding="UTF-8"%>
<p>这是一个Tag文件,负责计算1~100内的偶数之和:</p>
<% int sum=0;
int i=1;
for(i=1;i<=100;i++){
if(i%2==0){
sum=sum+i;
}
}
out.println(sum);
%>
<body bgcolor="yellow"><p>
<%
int size=1;
for(int i=1;i<=3;i++)
{
size=size+1;
%>
<font size="<%=size %>">
<!--一下的代码表示页面的文字将传入进来-->
<jsp:doBody />
</font>
<% }%>
<p>
</body>
较复杂的tag文件,仅供参考:
<%@ tag import="com.mip.core.util.MipConfig"%>
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@tag import="com.mip.core.security.objects.Loginer,com.mip.core.basebiz.view.web.controller.control.grid.vo.JqgridParam,java.util.List,java.util.Map,java.util.HashMap,java.util.Map.Entry,com.mip.common.dictionary.service.impl.DictionaryServiceImpl,com.mip.core.basebiz.dto.DataRecord"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="mip" tagdir="/WEB-INF/tags" %>
<%-- 必填字段 --%>
<%@ attribute name="divId" required="true"%>
<%@ attribute name="colName" fragment="true" description="在mip:column中定义"%>
<%@ attribute name="cols" fragment="true" description="在mip:column中定义"%>
<%@ attribute name="url" description="表格列表数据请求URL地址" required="true"%>
<%-- 可选字段 --%>
<%@ attribute name="sortname" description="表格排序的列"%>
<%@ attribute name="idColumn" description="主键字段名称"%>
<%@ attribute name="pager" description="表格底部页脚id,如果为空,没有页脚,没有翻页"%>
<%@ attribute name="pagerWithContent" description="表格底部通用查询、刷新、收缩/展开搜索栏是否带文字,
默认为false不带,true的时候追加文字"%>
<%@ attribute name="caption" description="表格的名字"%>
<%@ attribute name="rowNum" description="默认为20 整型数字"%>
<%@ attribute name="sortorder" description="排序方式"%>
<%@ attribute name="filterToolbar" description="顶部搜索栏true|false"%>
<%@ attribute name="filterToolbarSearchType" description="顶部搜索栏搜索类型,默认为bw(以XX开头),
可选值:eq,ne,bw,bn,cn,nc,ew,en,nu,nn 对应的意思:'相等','不等',
'开始于', '不开始于','like %%','not like %%', '结束于','不结束于','为空','不为空'] "%>
<%@ attribute name="toggleFilterToolbar" description="在底部增加隐藏/显示顶部搜索栏的按钮"%>
<%@ attribute name="edit" description="是否显示编辑按钮 true|false"%>
<%@ attribute name="add" description="是否显示新增按钮 true|false"%>
<%@ attribute name="del" description="是否显示删除按钮 true|false"%>
<%@ attribute name="editurl" description="增删改存储地址url"%>
<%@ attribute name="initEdit" description="进入表格之后就初始化列为可编辑状态,默认为false,为true时生效"%>
<%@ attribute name="rownumbers" description="是否显示行数 true|false"%>
<%@ attribute name="width" description="表格宽度
此字段废弃,所有表格都会取自己父容器的宽度,如果要设置该表格的宽度,使用div或其他标签抱住表格,然后设置父容器的宽度"%>
<%@ attribute name="autowidth" description="是否自动调整宽度为父级的宽度true|false,
此字段废弃,所有继承系统模板的jsp页面中的表格都会自适应宽度为父容器的宽度"%>
<%@ attribute name="noautowidth" description="是否自动调整宽度为父级的宽度true|false,
此字段废弃,所有继承系统模板的jsp页面中的表格都会自适应宽度为父容器的宽度"%>
<%@ attribute name="height" description="表格高度"%>
<%@ attribute name="multiselect" description="多选框"%>
<%@ attribute name="multiboxonly" description="默认为true只有选择checkbox时才选中此行,设置false时点击记录时就会选中此行"%>
<%@ attribute name="singleselect" description="单选框"%>
<%@ attribute name="gridComplete" description="表格完成之后的回调"%>
<%@ attribute name="onSelectRow" description="选择某行之后触发的事件,方法声明原型onCellSelect(rowid,status)"%>
<%@ attribute name="onCellSelect" description="点击单元格触发的实际,
要把edit属性设置为false,否则不起作用.方法声明原型onCellSelect(rowid,iCol,cellcontent,event)"%>
<%@ attribute name="autoComplete" description="true|false 为true时打开列搜索的自动匹配 已废弃"%>
<%@ attribute name="tableName" description="自动匹配的表名称,在头部搜索栏的自动设值中会用到"%>
<%@ attribute name="rownumbersClick" description="序号点击时触发的js函数名字,调用时会传递当前行的rowid"%>
<%@ attribute name="shrinkToFit" description="自动调整表格的列宽度适应表格整体宽度,默认为true,
自动调整后的宽度为:(列当前设置宽度/所有列设置的宽度 )*表格的宽度
当表格列较多时设置为false时使用列自己指定的宽度数值,此参数主要针对列较多的情况"%>
<%@ attribute name="isKeepParam" description="是否在返回时保持表格参数 ,默认为保存,"%>
<!-- 分组参数 -->
<%@ attribute name="grouping" description="分组显示 true|false 默认false 分组显示时不会自动生成序号"%>
<%@ attribute name="groupField" description="分组列的Field名字,多个用,隔开,分组显示时的必填项"%>
<%@ attribute name="groupColumnShow" description="是否显示分组的列 true|false,默认是false,多个使用,隔开"%>
<%@ attribute name="groupText" description="显示的分组标题格式"%>
<%@ attribute name="groupCollapse" description="默认是否展开,默认是true"%>
<%@ attribute name="groupOrder" description="分组显示 排序方式 asc|desc 默认desc"%>
<!-- 树参数 -->
<%@ attribute name="treeGrid" description="是否包含树节点"%>
<%@ attribute name="expandColClick" description="是否点击时打开"%>
<%@ attribute name="expandColumn" description="父节点列名称"%>
<%@ attribute name="jqOption" description="自定义jqgrid对象"%>
<%@ attribute name="setFrozenColumns" description="是否冻结表头,默认为false, bug如果设置了单选,多选冻结表头都会不正常,跟他的实现机制有关,如果单元格出现换行表头会无法对其"%>
<%@ attribute name="userDataOnFooter" description="汇总"%>
<%@ attribute name="footerrow" description="汇总"%>
<%@ attribute name="gridview" description="加快表格解析速度,默认为true,注意,如果使用treeGrid, subGrid and afterInsertRow (event)那么需要把gridview设为false"%>
<c:if test="${empty pagerWithContent}">
<c:set var="pagerWithContent" value="true" /><%-- 设置默认值 --%>
</c:if>
Tag文件中经常使用的指令有:
tag、taglib、include、attribute、variable
Tag指令的语法如下:
<%@ tag 属性1="属性值" 属性2="属性值" … 属性n="属性值" %>
Tag指令可以操作的属性有:
body-content、language、import、pageEncoding。
例如:
<%@ tag import="com.mip.core.util.MipConfig"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ attribute name="colName" fragment="true" description="在mip:column中定义"%>