文档章节

使用tag file定义模版

hyanqing
 hyanqing
发布于 2013/04/06 19:02
字数 425
阅读 113
收藏 0

jsp2.0以上的版本,增加了一个tag file的功能,个人认为类似于freemarker中的宏功能,我们也可以用这种新特性来制作页面的通用模版(不是说的静态页面):

1、首页在WEB-INF下新建目录tags,这个名字不能更改,然后在此目录下新建.tag文件(也可以再建目录进行分类),如base.tag,填入以下代码:


<%@ tag language="java" pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ attribute name="title" %>
<%@ attribute name="menu" %>
<%@ attribute name="left" %>
<%@ attribute name="footer"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>${empty title ? "默认标题" : title }</title>
</head>
<body>
<div>
   <div style="height:30px;border:1px solid red;">
   		<c:if test="${empty menu }">这是默认菜单栏</c:if>${menu}
   </div>
   <div style="height:550px;">
	   <div style="width:25%;height:99%;border:1px solid black;float:left;">
	     <c:if test="${empty left }">这是默认左边栏</c:if>${left }
	   </div>
	   <div style="color:green;float:left;">
	   	<jsp:doBody/>
	   </div>
   </div>
   <div style="height:30px;border:1px solid red;">
   	<c:if test="${empty footer }">这是默认footer栏</c:if>${footer }
   </div>
</div>
</body>
</html>

2、上述模版已制定好,在需要使用这个模版进行调用,跟JSP其他标签没什么两样,先在页面头部导入标签:我是把base.tag放在ui目录下


<%@ taglib prefix="ui" tagdir="/WEB-INF/tags/ui" %>



<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="ui" tagdir="/WEB-INF/tags/ui" %>
<ui:base>
   <jsp:attribute name="menu">自定义菜单</jsp:attribute>
   <jsp:body>
   	 <form action="">
	   	   用户名<input typ="text" name="username"/>
	   </form>
   </jsp:body>
</ui:base>
注意:当使用 jsp:attribute覆盖默认值的时候,主体内容必须放在 <jsp:body>之间


© 著作权归作者所有

共有 人打赏支持
hyanqing
粉丝 4
博文 4
码字总数 1344
作品 0
杭州
程序员
OmniFaces 2.1 发布,JSF2 工具库

OmniFaces 2.1 发布,该版本带来更多性能提升和重要修复, 增加内容: 0cd13ea - to explicitly declare a tagfile attribute which is only exposed intagfile's own EL scope, to prevent......

oschina
2015/06/05
711
3
C++模版函数

C++中的模版总体可以分为两大类:模版函数、模版类。本篇文章先写模版函数,接下来会介绍模版类。 定义:模版函数是通用的函数描述,也就是说它们使用通用类型来定义,其中的通用类型可用具体...

胡壮壮
2017/04/27
0
0
angularjs 指令详解

angularjs 指令详解 - template, restrict, replace 【转自:http://www.cnblogs.com/haogj/p/3601528.html】 通过指令机制,angularjs 提供了一个强大的扩展系统,我们可以通过自定义指令来...

罗兹威尔
2017/06/23
0
0
angularjs 指令详解 - template, restrict, replace

通过指令机制,angularjs 提供了一个强大的扩展系统,我们可以通过自定义指令来扩展自己的指令系统。 怎样定义自己的指令呢? 我们通过 Bootstrap UI 来学习吧。这个项目使用 angularjs 将 ...

杨太化
2015/01/18
0
0
08、模版方法模式--Template-Method

模版方法模式大纲 PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/p/6c6191a47197 本文出自 TigerChain 简书 人人都会设计模式 教程简介 1、阅读对象 本篇教程适合新手阅...

TigerChain
2017/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中秋快乐!!!

HiBlock
21分钟前
0
0
Node安装教程

1、安装最新版的node 2、设置相关目录(以D盘为例) 分别建立目录:D:\node,D:\node\node-globa,D:\node\node-cache 命令行输入: // 设置npm国内镜像 npm config set registry https://re...

Mohan710
49分钟前
1
0
中国发布域名系统基础软件 “红枫”

9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软件 “红枫(Maple DNS)”。 9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软...

问题终结者
今天
3
0
Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

分发系统介绍expect 分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者...

蛋黄_Yolks
今天
2
0
Java Http请求工具类

public static String httpPost(String source, String params) {URL url = null;HttpURLConnection conn = null;OutputStream os = null;String ret = null;try {......

yuewawa
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部