2012-01-15 33 views
2

我將jquery.js複製到WebContent/js/jquery/jquery.js。現在我想在某些portlet中使用該文件。要做到這一點我創建了一個Liferay的-portlet.xml中,看起來像這樣:portlet-liferay.xml:如何正確使用portal-javascript-header

<?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看起來像這樣是否正確?如果我有兩個包含一個具有相同路徑的js文件的war文件,Liferay將如何區分這兩個文件?

我需要做些什麼來使我的設置工作?

使用Liferay門戶社區版6.1.0 CE(佩頓/建造6100 /二〇一一年十二月一十五日)

+0

你正在使用哪個版本的Liferay? – Jonny 2012-01-16 08:08:23

+0

@Jonny:我使用的版本隱藏在我的問題的最後一行;-) – yankee 2012-01-16 09:17:32

+0

Doh !! :)星期一早上! – Jonny 2012-01-16 11:38:16

回答

11

使用

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

isntead的

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

如果你把JS-文件中的portlet

因爲關於DTD評論,標題門戶的JavaScript設置的JavaScript的路徑相對於門戶的上下文路徑。並且header-portlet-javascript設置JavaScript相對於portlet上下文路徑的路徑。

+0

好的...那工作。謝謝。 – yankee 2012-01-17 10:06:19

+0

好的地方SquAreRoot! – Jonny 2012-01-17 10:36:17

1

jQuery的位置看起來不正確。

如果你使用自己的插件名爲foobar的portlet的捆綁這個正確的路徑會(前提是你使用相同的Liferay-portlet.xml中):

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

+0

這是文件應該在我的eclipse-project中的路徑,訪問該文件的URL還是我應該在liferay-portlet.xml中插入的字符串?我的項目實際上有一些portlet,其中一些使用jquery。 – yankee 2012-01-16 09:06:03

+0

如果你在liferay-portlet.xml中,那麼路徑將是/js/jquery/jquery.js。但是,如果你在另一個portlet中,那麼上面的路徑就是你需要的(減去/ docroot/part)。然而,這會爲正在部署的portlet創建依賴關係,以便jQuery正常工作。 – Jonny 2012-01-16 11:39:41

+0

@yankee,我假設您正在使用Liferay SDK,並且您正在構建的portlet是由SDK創建的。假設這些東西,在foobar-portlet項目文件夾中應該有一個docroot文件夾。 – 2012-01-16 17:29:04

0

兩件事情:

jQuery與Liferay 5捆綁在一起,請檢查Liferay的版本以及它捆綁的jQuery版本,看看它是否符合您的需求。不過我相信它不在Liferay 6或6.1中,但我可能是錯的。

和:

如果你想擁有適用於所有你的Portlet你最好將它添加到您使用,而不是portlet中的主題(S)JavaScript庫。這樣它就可以全球訪問。缺點是,如果你分發你的portlet,那麼你應該讓人們意識到這種依賴性。

否則,如果您只是希望將它提供給一小部分portlet,請遵循RP所說的內容。

以下是using jQuery with Liferay 6的一些很好的參考。

+0

您提供給我發現的項目的唯一區別在於我的項目中名爲「WebContent」的文件夾在那裏名爲「docroot」。我嘗試將我的WebContent文件夾重命名爲「docroot」,但這根本沒有任何改變。 – yankee 2012-01-16 09:27:47

+0

您的liferay-portlet.xml路徑是正確的(如果這是您嘗試引用jQuery的portlet)。但是你的HTML代碼是不正確的,應該是/foobar-portlet/js/jquery/jquery.js,但正如我所說的那樣,它將創建一個依賴於該部署的使用jQuery的portlet。你有沒有考慮添加jQuery到你的主題? – Jonny 2012-01-16 11:41:25

+0

在上面的示例中,我想僅從「MyPortletName」使用jQuery。 HTML代碼由Liferay自動生成,我用我的portlet打開了一個頁面,我在瀏覽器中點擊「show source」並從那裏複製標籤。怎麼可能? – yankee 2012-01-16 22:47:10