文档章节

使用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 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

没有更多内容

加载失败,请刷新页面

加载更多

Java 源代码和 C 源代码的运行区别

与其他程序的执行方式和编译方式不同。 Java 源代码需要进行编译成字节码后在 Java 虚拟机上运行,这样 Java 程序能够保持独立性和跨平台功特性。 请参考下图。 https://www.cwiki.us/pages...

honeymose
49分钟前
3
0
Apache限定目录解析PHP,限制user_agent,PHP相关的配置

Apache限定目录解析PHP 配置前访问upload/index.php [root@test-a ~]# curl -x192.168.77.139:80 'www.test.com/upload/index.php'This is upload diretory 配置,/usr/local/apache2.4/......

野雪球
今天
5
0
java.util.Concurrent.Exchanger源码

类图 源码: package java.util.concurrent;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent......

狼王黄师傅
今天
6
0
Kubernetes里的secret最基本的用法

Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。 Secret可以以Volume或者环境变量的方式使用。 使用如下命令...

JerryWang_SAP
昨天
5
0
2018-11-20学习笔记

1. python数据类型: 给变量赋值什么样的值,变量就是什么样的类型 给变量赋值整数,变量就是整数类型 给变量赋值字符串,变量就是字符串类型 123 和“123”一样吗? 在python中 单引号 与双...

laoba
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部