我如何在 Liferay portlet 中使用 webjars
How do I use webjars in a Liferay portlet
我一直在尝试将 shufflejs 包含在 Liferay (6.2) portlet 中。
我已将以下依赖项添加到我的 pom.xml
文件中:
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>shufflejs</artifactId>
<version>4.0.0</version>
<scope>compile</scope>
</dependency>
- 我已确认在我的 tomcat 服务器上存在
webapps/my-portlet/WEB-INF/lib/shufflejs-4.0.0.jar
并且其中包含 META-INF/resources/webjars/shufflejs/4.0.0/dist/shuffle.js
我在 liferay-portlet.xml
文件中包含了以下行:
<header-portlet-javascript>
/webjars/shufflejs/4.0.0/dist/shuffle.js
</header-portlet-javascript>
- 当我用浏览器加载我的 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 未找到”错误外,我得到了所有内容
我错过了什么?
谢谢
假设你使用的是 Servlet 3.0 容器,你就错了 URL。您需要使用:
<header-portlet-javascript>
/webjars/shufflejs/4.0.0/dist/shuffle.js
</header-portlet-javascript>
Instructions for Servlet 3
With any Servlet 3 compatible container,
the WebJars that are in the WEB-INF/lib
directory are automatically
made available as static resources. This works because anything in a
META-INF/resources
directory in a JAR in WEB-INF/lib
is automatically
exposed as a static resource.
请注意,本文档表明您应该使用 webjars/shufflejs/4.0.0/dist/shuffle.js
,但对 Liferay <header-portlet-javascript>
配置进行一些试验会导致需要前面的 /
因为 Liferay 会将此 URL 连接到 portlet 名称的末尾以形成完整的 Liferay 资源 URL.
我找到了问题的根源。我已经使用 JRebel 在 Eclipse 中部署了我的 portlet 和 运行 门户。当我 deploy/run 没有 JRebel 的独立 portlet 时,找到了这个资源。此外,我可以关闭门户,然后在 Eclipse/JRebel 中将其重新打开 - 现在可以找到资源。
我之前在运行Eclipse/JRebel的时候遇到过类似的问题(见)。总而言之 Eclipse/JRebel 很棒,但有时在部署 portlet 时会出现一些问题。
我一直在尝试将 shufflejs 包含在 Liferay (6.2) portlet 中。
我已将以下依赖项添加到我的
pom.xml
文件中:<dependency> <groupId>org.webjars.bower</groupId> <artifactId>shufflejs</artifactId> <version>4.0.0</version> <scope>compile</scope> </dependency>
- 我已确认在我的 tomcat 服务器上存在
webapps/my-portlet/WEB-INF/lib/shufflejs-4.0.0.jar
并且其中包含META-INF/resources/webjars/shufflejs/4.0.0/dist/shuffle.js
我在
liferay-portlet.xml
文件中包含了以下行:<header-portlet-javascript> /webjars/shufflejs/4.0.0/dist/shuffle.js </header-portlet-javascript>
- 当我用浏览器加载我的 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 未找到”错误外,我得到了所有内容
我错过了什么?
谢谢
假设你使用的是 Servlet 3.0 容器,你就错了 URL。您需要使用:
<header-portlet-javascript>
/webjars/shufflejs/4.0.0/dist/shuffle.js
</header-portlet-javascript>
Instructions for Servlet 3
With any Servlet 3 compatible container, the WebJars that are in the
WEB-INF/lib
directory are automatically made available as static resources. This works because anything in aMETA-INF/resources
directory in a JAR inWEB-INF/lib
is automatically exposed as a static resource.
请注意,本文档表明您应该使用 webjars/shufflejs/4.0.0/dist/shuffle.js
,但对 Liferay <header-portlet-javascript>
配置进行一些试验会导致需要前面的 /
因为 Liferay 会将此 URL 连接到 portlet 名称的末尾以形成完整的 Liferay 资源 URL.
我找到了问题的根源。我已经使用 JRebel 在 Eclipse 中部署了我的 portlet 和 运行 门户。当我 deploy/run 没有 JRebel 的独立 portlet 时,找到了这个资源。此外,我可以关闭门户,然后在 Eclipse/JRebel 中将其重新打开 - 现在可以找到资源。
我之前在运行Eclipse/JRebel的时候遇到过类似的问题(见