文档章节

使用tag file定义模版

hyanqing
 hyanqing
发布于 2013/04/06 19:02
字数 425
阅读 114
收藏 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 in tagfile's own EL scope, to preven......

oschina
2015/06/05
743
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

没有更多内容

加载失败,请刷新页面

加载更多

《傲慢与偏见》的读书笔记与读后感作文2400字

《傲慢与偏见》的读书笔记与读后感作文2400字: 作者:孙苑馨;笔者按:读书这个习惯是我爸妈养出来的。小时候父母赚的钱除了吃饭穿衣剩下的就是买书了,他们除了买各种新鲜出版的文艺派图书...

原创小博客
15分钟前
1
0
oozie job 的挂了监控报警或重启

oozie Coordinator 的job 和actioni状态很多,但好像不支持设置某状态如failed后30分钟后自动重新拉启,因他的条件只有几种:触发条件可以是一个时间频率、一个dataset实例是否可用,或者可能...

hblt-j
33分钟前
1
0
python精简笔记-[6]-[if,for,while]语句

1.if 条件判断 语法: if 判断条件: 执行语句……elif 判断条件:    执行语句……elif 判断条件:    执行语句……else: 执行语句…… 实例1: n = input("请输...

平头哥-Enjoystudy
36分钟前
0
0
RxJava 是如何实现线程切换的(上)

前言 通过前一篇的从观察者模式出发,聊聊RxJava,我们大致理解了RxJava的实现原理,在RxJava中可以非常方便的实现不同线程间的切换。subscribeOn 用于指定上游线程,observeOn 用于指定下游线...

亭子happy
今天
2
0
想晋级高级工程师只知道表面是不够的!Git内部原理介绍

本文由云+社区发表 作者:腾讯工蜂用户:王二卫 从不一样的视角了解git,以便更好的使用git 一、git & git 版本库认识 git 是一个内容寻址的文件系统,其核心部分是一个简单的键值对数据库(...

腾讯云加社区
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部