portlet-liferay.xml:如何正确使用portal-javascript-header

时间:2012-01-15 17:35:10

标签: liferay

我将jquery.js复制到WebContent/js/jquery/jquery.js。现在我想在某些portlet中使用该文件。为此,我创建了一个liferay-portlet.xml,如下所示:

<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC
    "-//Liferay//DTD Portlet Application 6.0.0//EN"
    "http://www.liferay.com/dtd/liferay-portlet-app_6_0_0.dtd">

<liferay-portlet-app>
    <portlet>
        <portlet-name>MyPortletName</portlet-name>
        <header-portal-javascript>/js/jquery/jquery.js</header-portal-javascript>
    </portlet>
</liferay-portlet-app>

如果我访问portlet,Liferay会生成以下行:

<script src="/js/jquery/jquery.js?browserId=firefox&amp;minifierType=js&amp;languageId=en_US&amp;b=6100&amp;t=1326630657000" type="text/javascript"></script>

这会在日志记录控制台中导致WARN [404_jsp:?] /js/jquery/jquery.js

URL看起来是否正确?如果我有两个war文件,都包含一个具有相同路径的js文件,Liferay将如何区分这两个?

我需要做些什么才能使我的设置正常工作?

使用Liferay Portal Community Edition 6.1.0 CE(Paton / Build 6100/2011年12月15日)

3 个答案:

答案 0 :(得分:11)

使用

<header-portlet-javascript>/js/jquery/jquery.js</header-portlet-javascript>

不是

<header-portal-javascript>/js/jquery/jquery.js</header-portal-javascript>

如果你将js文件放入portlet

因为关于DTD中的注释,header-portal-javascript设置JavaScript相对于门户网站上下文路径的路径。 header-portlet-javascript设置JavaScript相对于portlet上下文路径的路径。

答案 1 :(得分:1)

jQuery的位置看起来不正确。

如果你将它与你自己的名为foobar-portlet的插件捆绑在一起,那么正确的路径是(如果你使用相同的liferay-portlet.xml):

foobar-portlet/docroot/js/jquery/jquery.js

答案 2 :(得分:0)

两件事:

jQuery与Liferay 5捆绑,检查Liferay的版本以及捆绑的jQuery版本,看看它是否符合您的需求。但是我相信它不在Liferay 6或6.1中,但我可能错了。

如果您想让所有portlet都可以使用JavaScript库,那么最好将它添加到您使用的主题而不是portlet中。这样它将是全球可访问的。缺点是,如果您正在分发您的portlet,那么您应该让人们意识到这种依赖。

否则,如果您只想让它可用于一小部分portlet,那么请按照RP所说的那样。

以下是using jQuery with Liferay 6的一些很好的参考资料。