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. 阿里云提供全托管 ZooKeeper

    自 2010 年左右第一次引入以来,Apache ZooKeeper 目前在阿里巴巴集团内部已经有了将近 10 年的发展,使用的场景非常广泛,基于 ZooKeeper 强一致性的特点,被用在了分布式锁 ...

  2. IndentationError: expected an indented block错误

    Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的python程序员,也可能陷入陷阱当中.最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分 ...

  3. 使用C#反射实现用户控件调用父页面方法

    using System.Reflection; MethodInfo mi = this.Page.GetType().GetMethod("GetUserName"); //该 ...

  4. redis中重启和停止服务

    首先需要打开两个终端,一个是服务端,一个是客户端 1.开启服务端 redis-server 2.开启客户端 redis-cli 关闭双方之间的连接: 在客户端中输入:redis-cli shutdow ...

  5. java 实现文件内容的加密和解密

    package com.umapp.test; import java.io.FileInputStream; import java.io.FileOutputStream; import java ...

  6. LINUX超级用户(权限)在系统管理中的作用

    1.对任何文件.目录或进程进行操作: 但值得注意的是这种操作是在系统最高许可范围内的操作:有些操作就是具有超级权限的root也无法完成: 比如/proc 目录,/proc 是用来反应系统运行的实时状态 ...

  7. 判断是否微信浏览器,获取cookie,获取URL来源等

    function isWeiXin() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenge ...

  8. Laravel Carbon获取 某个时间后N个月的时间

    $time = "2020-11-20 00:00:00"; $res = (new Carbon)->setTimeFromTimeString($time)->ad ...

  9. Python中的一些模块用法

    python中os模块用法 python之模块之shutil模块 -------------------------------os模块-------------------------------- ...

  10. NPOI 1.1

    1 .NPOI 版本2.1 2. NPOI 读取execl 3.导入数据(SqlBulkCopy) 示例代码: public class ImportServerData { DataTable dt ...