2016-06-07 62 views
0

我一直試圖在Liferay(6.2)portlet中包含shufflejs如何在Liferay portlet中使用webjars

  1. 我加入了以下依賴我pom.xml文件:

    <dependency> 
        <groupId>org.webjars.bower</groupId> 
        <artifactId>shufflejs</artifactId> 
        <version>4.0.0</version> 
        <scope>compile</scope> 
    </dependency> 
    
  2. 我已經證實,我的Tomcat服務器上,該webapps/my-portlet/WEB-INF/lib/shufflejs-4.0.0.jar存在且,在它的META-INF/resources/webjars/shufflejs/4.0.0/dist/shuffle.js
  3. 我在我的liferay-portlet.xml文件中包含了以下行:

    <header-portlet-javascript> 
        /webjars/shufflejs/4.0.0/dist/shuffle.js 
    </header-portlet-javascript> 
    
  4. 當我與我的瀏覽器加載我的portlet的頁面,我得到的一切,除了我得到http://localhost:20080/my-portlet/webjars/shufflejs/4.0.0/dist/shuffle.js?browserId=other&minifierType=js&languageId=en_US&b=6210&t=1465296591338

我缺少一個「404 Not Found」錯誤?

謝謝

回答

0

我發現我的煩惱的原因。我已經部署了我的portlet並使用JRebel在Eclipse中運行門戶。當我在沒有JRebel的情況下部署/運行我的Portlet獨立版時,會找到此資源。此外,我能夠將門戶網站關閉,然後將其重新引入Eclipse/JRebel - 現在可以找到資源。

以前使用Eclipse/JRebel運行時遇到類似的問題(請參見Liferay: perform an action when a -LocalServiceUtil is available)。總而言之,Eclipse/JRebel非常棒,但是在部署portlet時,有時會出現一些小問題。

1

假設您使用的是Servlet 3.0容器,那麼您的URL有錯誤。您需要使用:

<header-portlet-javascript> 
    /webjars/shufflejs/4.0.0/dist/shuffle.js 
</header-portlet-javascript> 

按照webjars documentation

說明Servlet的3

對於任何Servlet的3兼容的容器, 是在WEB-INF/lib目錄是WebJars自動將 作爲靜態資源提供。這是有效的,因爲JAR中WEB-INF/lib中的 META-INF/resources目錄中的任何內容都會自動公開爲靜態資源 。

注意,這個文件將表明您應該使用webjars/shufflejs/4.0.0/dist/shuffle.js,但隨着Liferay的<header-portlet-javascript>配置一個小實驗導致前面/作爲Liferay的必要性將串連此網址到門戶名稱的末尾以形成完整的Liferay資源URL。

+0

我之前試過這個,並且確認我再次嘗試過,但沒有成功。首先'liferay-portlet.xml'喜歡它來自'webapp'根目錄的文檔,其他項目('webapp/resources/css/*'和'webapp/resources/js/*'必須被引用開始與'/ resource/...') – Yoshiya

+0

這個評論根本不是真的...... Liferay不需要你的web應用程序中的任何類型的文件夾結構。也許你把這個與JSF約定混淆爲'/ resources'?此外,webjars使用servlet 3.0特性,因爲lib文件夾中的任何jar都會公開其'META-INF/resources'目錄中包含的所有資源。 – Lucas

+0

您的上述信息是正確的,但它沒有解決我的問題 - 因爲即使在遵循上述信息時我的問題仍然存在。我更新了我的問題,並在下面回答了有關我的問題根源的信息。 – Yoshiya