我将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&minifierType=js&languageId=en_US&b=6100&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日)
答案 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的一些很好的参考资料。