如何在Liferay portlet中使用webjars

时间:2016-06-07 16:08:19

标签: liferay-6 webjars

我一直在尝试将shufflejs包含在Liferay(6.2)portlet中。

  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页面时,除了得到“未找到404”之外,我得到了所有内容。 http://localhost:20080/my-portlet/webjars/shufflejs/4.0.0/dist/shuffle.js?browserId=other&minifierType=js&languageId=en_US&b=6210&t=1465296591338
  5. 的错误

    我错过了什么?

    谢谢

2 个答案:

答案 0 :(得分: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是自动的   作为静态资源提供。这是有效的,因为任何东西   META-INF/resources中JAR中的WEB-INF/lib目录是自动的   作为静态资源公开。

注意,此文档表明您应该使用webjars/shufflejs/4.0.0/dist/shuffle.js,但对Liferay <header-portlet-javascript>配置进行一些实验会导致前面的/作为Liferay的必要性将此URL连接到portlet名称的末尾,以形成完整的Liferay资源URL。

答案 1 :(得分:0)

我找到了麻烦的原因。我已经部署了我的portlet并使用JRebel在Eclipse中运行门户。当我在没有JRebel的情况下部署/运行我的portlet时,会找到此资源。此外,我可以将门户网站关闭,然后在Eclipse / JRebel中重新启动 - 现在可以找到资源。

我之前遇到类似的问题(请参阅Liferay: perform an action when a -LocalServiceUtil is available)与Eclipse / JRebel一起运行。总而言之,Eclipse / JRebel非常棒,但有时在部署portlet时会出现一些小问题。