portlet-liferay.xml:如何正确使用门户javascript头

portlet-liferay.xml:如何正确使用门户javascript头,liferay,Liferay,我将jquery.js复制到WebContent/js/jquery/jquery.js。现在我想在某些portlet中使用该文件。为此,我创建了一个liferay-portlet.xml,如下所示: MyPortletName /js/jquery/jquery.js 如果我访问portlet,Liferay将生成以下行: 这会导致日志控制台中出现警告[404_jsp:?]/js/jquery/jquery.js URL看起来像这样真的正确吗?如果我有两个war文件,都包含一个具有相同

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


MyPortletName
/js/jquery/jquery.js
如果我访问portlet,Liferay将生成以下行:


这会导致日志控制台中出现
警告[404_jsp:?]/js/jquery/jquery.js

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

我需要做什么才能让我的设置正常工作


使用Liferay Portal社区版6.1.0 CE(Paton/Build 6100/2011年12月15日)

jQuery的位置看起来不正确

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

foobarportlet/docroot/js/jquery/jquery.js

两件事:

jQuery与Liferay 5捆绑在一起,请检查Liferay的版本及其捆绑的jQuery版本,看看是否满足您的需要。但是我相信它不在Liferay 6或6.1中,但我可能错了

以及:

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

否则,如果您只想让一小部分portlet可以使用它,那么请按照RP所说的操作

这里有一些很好的参考资料。

使用

/js/jquery/jquery.js
代替

/js/jquery/jquery.js
如果将js文件放入portlet中


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

您使用的是哪个版本的Liferay?@Jonny:我使用的版本隐藏在我问题的最后一行;-)Doh!!:)今天是星期一早上@yankee,你是如何创建这个portlet的,你是如何部署它的?您正在使用吗?@RP:是的,我正在使用Liferay IDE。我通过创建一个Spring控制器类来创建portlet,该类处理内容,并向我的portlet.xml文件中添加几行;-)。这是文件应该位于eclipse项目中的路径、访问文件的URL还是应该在liferay-portlet.xml中插入的字符串?我的项目实际上有很多portlet,其中有几个使用jquery。但是,如果您在另一个portlet中,那么上面的路径就是您所需要的(减去/docroot/part)。但是,这会在部署的portlet上创建一个依赖项,以便jQuery工作。@yankee,我假设您正在使用Liferay SDK,并且您正在构建的portlet是由SDK创建的。假设是这样,在您的FoobarPortlet项目文件夹中应该有一个docroot文件夹。@RP:实际上,我是使用RationalApplicationDeveloper在WebSpherePortal上开始开发的(尽量避免使用JSR-268的特定于WebSphere的特性)。然后我将该项目导入Liferay IDE继续开发。到目前为止,在没有名为docroot的文件夹的情况下一直工作正常。我知道,实际上,docroot文件夹是用于Liferay SDK的。一旦部署,内容docroot将被复制到WAR中,这样docroot文件夹就会消失。不幸的是,我对WebSphere不太熟悉,但只要您在
/js/jQuery/jQuery.js
中有jQuery文件,您的设置看起来就正确。我发现您提供给我的项目的链接的唯一区别是,在我的项目中称为“WebContent”的文件夹在那里称为“docroot”。我尝试将我的WebContent文件夹重命名为“docroot”,但这并没有改变任何东西。您的liferay-portlet.xml路径是正确的(如果您尝试引用的是jQuery的portlet)。但是您的HTML代码是不正确的,应该是/foobarportlet/js/jquery/jquery.js,但正如我所说的,这将创建对部署使用jquery的portlet的依赖。您是否考虑过将jQuery添加到您的主题中?在上面的示例中,我只想使用来自“MyPortletName”的jQuery。HTML代码是由Liferay自动生成的,我打开了一个带有portlet的页面,在浏览器中单击“ShowSource”,并从中复制了标记。怎么可能呢?我想平方根可能已经回答了你下面的问题。您可能希望使用header PORTLET javascript而不是header PORTAL javascript。但是,如果希望所有portlet都可以访问jQuery,那么将其添加到主题中。