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. Istio流量管理实践之(3): 基于Istio实现流量对比分析

    流量镜像 流量镜像,也称为影子流量,流量镜像提供一种尽可能低的风险为生产带来变化的强大功能.镜像会将实时流量的副本发送到镜像服务.镜像流量发生在主服务的关键请求路径之外. 在非生产或者测试环境中,尝试 ...

  2. 19-10-23-L-Mor

    ZJ一下: 挺好,T2打表差点出规律(最近拿PFGYL硬卡提升自己几乎没有的打表水平) T1竟然……是个××题 T3的Floyd写死了. T1 简单思考会发现……直接全异或起来就AC 话说T1真叫最大 ...

  3. VS2012与windos版本不兼容问题

    昨天晚上加完班,想着把windows更新下.今天上午就发现再运行VS报错了,提示VS2012与windows版本不兼容,打开.sln文件后,VS自动关闭.错误如下: 查看后网上提示安装VS2012的一 ...

  4. Django-rest Framework(六)

    不懂使用机制的直接看源码就好了,也不是很难,能够看得懂 视图家族 1. View:将请求方式与视图类的同名方法建立映射,完成请求响应(原生django) from django.views impor ...

  5. python第四课

    1.lambda()函数 可以直接定义一个函数,简化用def的定义. >>> func=lambda x,y:x+y>>> print(func(3,4))7> ...

  6. reduce个数问题

    reduce的数目到底和哪些因素有关 1.我们知道map的数量和文件数.文件大小.块大小.以及split大小有关,而reduce的数量跟哪些因素有关呢?  设置mapred.tasktracker.r ...

  7. 入门servlet:request获取请求体数据

    @WebServlet("/RequestDemo5") public class RequestDemo5 extends HttpServlet { protected voi ...

  8. Docker(一)简介及核心概念

    1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这 ...

  9. maximum clique 1

    maximum clique 1 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288KSpecial Judge, 64bit IO Format: % ...

  10. ssh实现免密码登录和文件传输

    一般的用户名密码认证不安全,很容易被暴力破解,还不方便:而大多数人都是选择使用 SSH 密钥认证,不仅安全还不用每次输密码 ssh密钥对 # 使用 ssh-keygen 生成非对称密钥,一路回车即可 ...