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. [转]在C#代码中应用Log4Net系列教程(附源代码)

    Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...

  2. [转]WPF中Binding的技巧

    在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. so ...

  3. 简单易学的机器学习算法—SVD奇异值分解

    简单易学的机器学习算法-SVD奇异值分解 一.SVD奇异值分解的定义     假设M是一个的矩阵,如果存在一个分解: 其中的酉矩阵,的半正定对角矩阵,的共轭转置矩阵,且为的酉矩阵.这样的分解称为M的奇 ...

  4. JEECMS自定义标签

    查看JEECMS的源代码发现开发者版本还没有类似现成的统计标签,一种解决的办法是使用现有的JEECMS标签,像这样Struts( [@cms_content_list channel=id]${tag ...

  5. vue项目打包部署到服务器,静态资源文件404

    js文件404问题        原因:打包的项目静态资源的路径需要设置为绝对路径.如果是相对路径会出错 解决办法:修改config/index.js文件,将 assetsPublicPath修改为' ...

  6. PAT甲级——A1036 Boys vs Girls

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  7. JDK配置环境变量 (JDK安装成功后进行配置)

    "我的电脑" -- 右键"属性" --- "高级系统设置" --- “环境变量” 第一步:配置     JAVA_HOME 变量 找到 变量 ...

  8. C#获取C# DLL中的指定接口的所有实现实例 - qq_19759475的博客 - CSDN博客

    原文:C#获取C# DLL中的指定接口的所有实现实例 - qq_19759475的博客 - CSDN博客 public static List<T> CreateTarInterface& ...

  9. struts2-环境搭建-访问流程-配置详解-常量配置-类详解

    1 struts2概述 1.1 概念  1.2 struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 struts2具有更加先进的架构以 ...

  10. MyEclipse6.5安装SVN插件方法

    MyEclipse6.5安装SVN插件,掌握了几种方法,本节就像大家介绍一下MyEclipse6.5安装SVN插件的三种方法,看完本文你肯定有不少收获,希望本文能教会你更多东西. 一.安装方法: My ...