我正在移植我的Spring MVC Servlet应用程序以兼容Liferay中的部署。我将应用程序转换为Spring MVC portlet。我的应用程序使用html + javascript作为前端。我现在无法在index.html中导入.js或.css文件,因为相对URL无法正常工作。在这方面有任何帮助吗?
答案 0 :(得分:1)
如果您在liferay-portlet.xml
文件中提供javascript和css文件的位置,则会自动添加该文件。您不必将其显式添加到html / jsp文件中。
<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 ---文档根目录 - - - 图片 -------- gear.png
答案 1 :(得分:0)
您的引用是相对于您的Web应用程序上下文引用,通常是门户ROOT上下文,包括portlet实例和其他一些依赖构造(相关的LR主题)和不是你假设的portlet(你的应用程序)上下文。因此,解决方案是使用特定于门户网站实例的全局变量,并在路径定义前添加前缀。要实现此目的,您必须在呈现HTML页面内容之前构建此路径。这通常使用一些Liferay实用程序类来实现,例如对于像这样的JSP:
<link href="<%= PortalUtil.getStaticResourceURL(request, request.getContextPath() + "/css.jsp", portlet.getTimestamp()) %>"
显然,如果你没有像JSP这样的服务器端脚本(BTW,我认为这不是一个好主意),那么你必须使用其他一些Java层工具来解决这个问题,以便在呈现之前写入HTML。浏览器。