2016-06-07 101 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