Liferay自带了很多标签库,这极大地提高了开发Liferay项目的效率。

下面让我们一起来探索吧。

  1. 什么是标签库?

  2. 什么是JSP标签?

  3. 什么是JSTL?

标签库由下面这几部分组成:

Tag Library Description(TLD)

Tag Library URI

Tag Library Implementation JAR file

Tag Library Description(TLD) 标签库描述:

每个标签库都会有自己的描述文件,它是一个包含标签信息(标签名,标签属性,哪些属性是必备的,哪些属性是可选的)的xml文件。

Tag Library URI 标签库统一资源标识符:

标签库URI是一个用来定义标签库的唯一标识,它会被JSP页面用来导入标签库。Tag Library URI定义在tld文件中。我们会Tag Library URI写在应用部署文件(web.xml)中,这样就可以把taglib和应用联系起来了。

Tag Library Implementation JAR file 标签库实现JAR文件:

标签库实现JAR文件里面包含的是jsp标签的java实现类。我们需要把这个jar文件包含到application的classpath中,或者把它包含的server的lib目录中。

JSP Tags Libraries的应用:

我们已将知道JSP Tags Libraries只被用到JSP页面中。如果我们想要在Web应用中使用它,则需遵循以下步骤:

  • 在app的deployment描述文件(web.xml)中注册该taglib.

  • 把taglib描述文件(tld)放入WEB-INF文件夹下

  • 把taglib实现jar包地址添加到app的classpath中

  • 在JSP页面中引用Tag Library URI

注册taglib:

如果我们想在app中使用某个taglib,我们需要在app的web.xml文件中注册该taglib.在注册这个taglib的时候,我们需要知道taglibde URI和TLD文件位置。(Liferay Portal的taglib注册在liferay-ce-portal-7.0-ga4\tomcat-8.0.32\webapps\ROOT\WEB-INF\web.xml中)

Example:

<jsp-config>

<taglib>

<taglib-uri>http://liferay.com/tld/aui</taglib-uri>

<taglib-location>/WEB-INF/tld/aui.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location>

</taglib>

</jsp-config>

添加taglib描述文件:

我们需要把taglib的tld文件放在app的WEB-INF文件夹下,或者单独创建一个文件夹来存放,需要注意的是它的位置需要与web.xml文件中的taglib-location保持一致。

(liferay taglib的描述文件放在tomcat-8.0.32\webapps\ROOT\WEB-INF\tld中)

Example:

<taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location>

在app的classpath中添加taglib的实现jar:

每个taglib都有自己的实现jar,如果我们想要在app中使用它,则需要把它添加到app的WEB-INF/lib目录下。(liferay-ce-portal-7.0-ga4\tomcat-8.0.32\webapps\ROOT\WEB-INF\lib\util-taglib.jar)

Example:

For JSTL (jstl-api.jar,jstl-impl.jar)

For Liferay(util-taglib.jar)

在JSP页面中引用taglib:

最后我们需要在JSP页面中引用该标签库。

Example:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

我们需要提供taglib的URI和Prefix.

Example:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:actionURL var="sendUserNotification" windowState="normal" name="sendUserNotification">

</portlet:actionURL>

Liferay JSP Tag Libraries

Liferay提供了如下的JSP Taglibs供开发者使用:

Portlet Tag Library

Liferay Portlet

Liferay Security

Liferay AUI

Liferay Util

Liferay JSP Tag Libraries在Portlet开发中的用法:

在开发Liferay portlet的时候,我们会在JSP页面中大量用到Liferay jsp taglib。有趣的是,你并不需要自己注册这些taglib, 当你把portlet部署到liferay上的时候,liferay会自动帮你注册好,你只需要在JSP中引用该taglib就ok了。

Example:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>

<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>

<%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security" %>

<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>

<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>

<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>

下面的地址包含Liferay所有tags的信息:

http://docs.liferay.com/portal/6.2/taglibs/

https://docs.liferay.com/portal/7.0-ga5/taglibs/util-taglib/

Liferay是如何在部署过程中帮你注册的taglib(这只适用于6.2):

当你用Liferay IDE创建一个Portlet插件时,你会发现web.xml中没有taglib的注册信息,WEB-INF目录下没有taglib实现的JAR包与tld文件。这是为什么呢?

下面揭晓答案:当你把你的portlet部署到Liferay portal上的时候,它会部署到server的webapps目录下(tomcat-7.0.42\webapps)

找到部署的portlet,打开它的web.xml文件,你会发现里面已经注册了所有的taglib.

Example:/tomcat-7.0.42/webapps/DockBarCustomNotification-portlet/WEB-INF/web.xml

<jsp-config>

<taglib>

<taglib-uri>http://liferay.com/tld/aui</taglib-uri>

<taglib-location>/WEB-INF/tld/aui.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://liferay.com/tld/portlet</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-portlet-ext.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://liferay.com/tld/security</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-security.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://liferay.com/tld/theme</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-theme.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://liferay.com/tld/ui</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-ui.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://liferay.com/tld/util</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-util.tld</taglib-location>

</taglib>

</jsp-config>

同理,打开/tomcat-7.0.42/webapps/DockBarCustomNotification-portlet/WEB-INF/tld文件夹,你会发现所有的taglib tld文件都在里面。

Example:

aui.tld

liferay-portlet.tld

liferay-portlet-ext.tld

liferay-security.tld

liferay-theme.tld

liferay-ui.tld

liferay-util.tld

我们知道每个taglib都有一个实现的jar,Liferay把所有的libraries实现类打成了一个jar包util-taglib.jar。

你可以在下面目录下找到它(/tomcat-7.0.42/webapps/DockBarCustomNotification-portlet/WEB-INF/lib)

Note: Liferay只会自动注册liferay taglibs,而不会注册JSTL taglibs.

在Liferay Portlet中运用JSTL Tag Libraries(同样只适用于6.2)

由于Liferay只会自动注册liferay taglibs,那如果我们想要使用JSTL tag libraries如Core Tags ,Formatting tags ,SQL tags ,XML tags ,JSTL Functions 该怎么办呢?

假设我们需要使用JSTL core tag library

  1. 在liferay-plugin-package.properties文件中添加

portal-dependency-jars=\

jstl-api.jar,\

jstl-impl.jar

portal-dependency-tlds=c.tld

2. 然后部署到portal上,Liferay就可以帮我们自己处理了

本文参考:Liferay JSP Tag Libraries Introduction

Liferay JSP Tag Libraries介绍的更多相关文章

  1. Java使用JSP Tag Files & JSP EL Functions打造你自己的页面模板

    1. 简单说明:在JSP 2.0后, 你不再需要大刀阔斧地定义一堆TagSupport或BodyTagSupport, 使用JSP Tag Files技术可以实现功能强大的页面模板技术. 在这里抛砖引 ...

  2. Configure the Struts Tag Libraries

    In Struts framework, you always need to configure the Struts tag libraries in order to access it in ...

  3. Tag Helpers 介绍

    Tag Helpers 介绍 原文:Introduction to Tag Helpers作者:Rick Anderson翻译:刘浩杨校对:高嵩(Jack) 什么是 Tag Helpers? Tag ...

  4. JSP TAG

    Jsp tag 能够灵活的将公共JSP代码模块化,类似<jsp:include page="./include.jsp"></jsp:include>等等. ...

  5. ASP.NET Core MVC – Tag Helpers 介绍

    ASP.NET Core Tag Helpers系列目录,这是第一篇,共五篇: ASP.NET Core MVC – Tag Helpers 介绍 ASP.NET Core MVC – Caching ...

  6. Liferay JSP中常用的标签

    (本文转载自http://www.cnblogs.com/edwardlauxh/archive/2010/03/26/1918614.html) 在Liferay框架中拥有它自身的标签,虽然Port ...

  7. ASP.NET Core 中文文档 第四章 MVC(3.6.1 )Tag Helpers 介绍

    原文:Introduction to Tag Helpers 作者:Rick Anderson 翻译:刘浩杨 校对:高嵩(Jack) 什么是 Tag Helpers? Tag Helpers 提供了什 ...

  8. JSP入门:介绍什么是JSP和Servlet(转)

    转自:http://developer.51cto.com/art/200907/134506.htm JSP入门:什么是jsp? JSP(Java Server Pages)是由Sun Micros ...

  9. ASP.NET Core MVC Tag Helpers 介绍

    简介 Tag Helpers 提供了在视图中更改和增强现有HTML元素的功能.将它们添加到视图中,会经过Razor模板引擎处理并创建一个HTML,之后再返回给浏览器.有一些Tag Helpers,其实 ...

随机推荐

  1. Linux常用命令的缩写含义

    命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat package manager 红帽子打包管 ...

  2. charles for https

    To remotely capture http or https traffic with charles you will need to do the following: HOST - Mac ...

  3. python 可迭代对象,迭代器,生成器的区别及使用

    可迭代对象 可迭代对象类型:list,dict,tuple,str,set,deque等 如何判断一个对象是否是可迭代对象,可以通过dir()方法看它里面有没有__iter__方法,如果有这个方法就是 ...

  4. 如何在vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

  5. 容斥原理学习(Hdu 4135,Hdu 1796)

    题目链接Hdu4135 Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  6. redis教程(一)-----redis数据类型、基本命令、发布订阅以及持久化

    简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMwa ...

  7. Eclipse 出现select type (? = any character,*= any String,Tz=TimeZone)

    在eclipse中想运行project的时候,往往是右键项目名称---->run As --->Java Application 但是会弹出窗口显示select type (? = any ...

  8. oracle-表空间-用户-角色-权限

    概要图 概要图 一 表空间 1.1创建表空间 --问题:创建一个名为hp的表空间,指定数据文件为hp.dbf,大小为10m. create tablespace hp datafile 'C:\app ...

  9. 洛谷P1164 小A点菜 [2017年4月计划 动态规划08]

    P1164 小A点菜 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过u ...

  10. Leetcode661.Image Smoother图片平滑器

    包含整数的二维矩阵 M 表示一个图片的灰度.你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多 ...