Liferay-Spring MVC portlet导入多个.js文件

时间:2013-08-18 16:54:39

标签: javascript html spring liferay portlet

我正在移植我的Spring MVC Servlet应用程序以兼容Liferay中的部署。我将应用程序转换为Spring MVC portlet。我的应用程序使用html + javascript作为前端。我现在无法在index.html中导入.js或.css文件,因为相对URL无法正常工作。在这方面有任何帮助吗?

2 个答案:

答案 0 :(得分:1)

如果您在liferay-portlet.xml文件中提供javascript和css文件的位置,则会自动添加该文件。您不必将其显式添加到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 ---文档根目录 - - - 图片 -------- 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。浏览器。