我正在移植我的 Spring MVC Servlet 应用程序以兼容 Liferay 中的部署。正在将应用程序转换为 Spring MVC portlet。我的应用程序使用 html + javascript 作为前端。我现在无法在我的 index.html 中导入 .js 或 .css 文件,因为相对 URL 不起作用。在这方面有什么帮助吗?
问问题
1452 次
2 回答
1
如果您在文件中提供 javascript 和 css 文件的位置,liferay-portlet.xml
则会自动添加。您不必将其显式添加到您的 html/jsp 文件中。
在您的 liferay-portlet.xml 中,请使用正确的文件路径添加以下属性。
<header-portlet-css>/css/main.css</header-portlet-css>
<header-portlet-javascript>/js/main.js</header-portlet-javascript>
此外,如果您想访问任何静态资源,如图像或其他任何东西,您可以使用这样的路径
<img src='<%=request.getContextPath()%>/images/gear.png' class='settings' />
结构是这样的
-portlet ---docroot ------图像 --------gear.png
于 2013-08-19T06:38:57.053 回答
0
您的引用与您的 Web 应用程序上下文引用相关,在这种情况下,它通常是门户 ROOT 上下文,包括 portlet 实例和一些其他相关构造(相关的 LR 主题),而不是您假设的 portlet(您的应用程序)上下文。因此,解决方案是在路径定义前使用带有前缀的门户实例特定全局变量。为此,您必须在呈现 HTML 页面内容之前构建此路径。这通常使用一些 Liferay 实用程序类来实现,例如在这样的 JSP 的情况下:
<link href="<%= PortalUtil.getStaticResourceURL(request, request.getContextPath() + "/css.jsp", portlet.getTimestamp()) %>"
显然,如果您没有像 JSP 这样的服务器端脚本(顺便说一句,我认为这不是一个好主意),那么您必须使用其他一些 Java 层工具在浏览器呈现 HTML 之前写入 HTML 来解决这个问题。
于 2013-08-19T04:22:23.003 回答