• Liferay JSP Tag Libraries介绍


    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 omcat-8.0.32webappsROOTWEB-INFweb.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.32webappsROOTWEB-INF ld中)

    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 omcat-8.0.32webappsROOTWEB-INFlibutil-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.42webapps)


    找到部署的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

  • 相关阅读:
    定制一个类似地址选择器的view
    3D版翻页公告效果
    一分钟搞定触手app主页酷炫滑动切换效果
    苹果版小黄车(ofo)app主页菜单效果
    基于SpringMVC+Ext.js的权限管理系统(无权限框架)
    使用 mybatis + flying-0.9.4 的电商后端
    iOS仿支付宝首页效果
    Android蓝牙
    JavaWeb Session详解
    原生JS实现的h5小游戏-植物大战僵尸
  • 原文地址:https://www.cnblogs.com/hibou/p/7773534.html
Copyright © 2020-2023  润新知