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

Javascript Liferay Spring MVC portlet导入多个.js文件,javascript,html,spring,liferay,portlet,Javascript,Html,Spring,Liferay,Portlet,我正在移植我的SpringMVCServlet应用程序,以便与Liferay中的部署兼容。我正在将应用程序转换为SpringMVCPortlet。我的应用程序使用html+javascript作为前端。我现在无法在my index.html中导入.js或.css文件,因为相对URL不起作用。这方面有什么帮助吗?您的引用是相对于您的web应用程序上下文引用的,它通常是门户根上下文,在本例中包括portlet实例和一些其他依赖的构造(相关的LR主题),而不是您假定的portlet(您的应用程序)上下

我正在移植我的SpringMVCServlet应用程序,以便与Liferay中的部署兼容。我正在将应用程序转换为SpringMVCPortlet。我的应用程序使用html+javascript作为前端。我现在无法在my index.html中导入.js或.css文件,因为相对URL不起作用。这方面有什么帮助吗?

您的引用是相对于您的web应用程序上下文引用的,它通常是门户根上下文,在本例中包括portlet实例和一些其他依赖的构造(相关的LR主题),而不是您假定的portlet(您的应用程序)上下文。因此,解决方案是使用特定于门户实例的全局变量,该变量的前缀位于路径定义之前。要实现这一点,您必须在呈现HTML页面内容之前构建此路径。这通常是通过使用一些Liferay实用程序类实现的,例如,在类似以下JSP的情况下:

<link href="<%= PortalUtil.getStaticResourceURL(request, request.getContextPath() + "/css.jsp", portlet.getTimestamp()) %>"

如果您在
liferayportlet.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>
/css/main.css
/js/main.js
此外,如果您想访问任何静态资源,如图像或其他任何内容,可以使用如下路径

<img src='<%=request.getContextPath()%>/images/gear.png' class='settings' />
/images/gear.png'class='settings'/>
结构是这样的

<img src='<%=request.getContextPath()%>/images/gear.png' class='settings' />
-portlet ---多根 ------图像
--------gear.png

请告诉我您的web项目的结构,以及html页面的位置。这正是我的问题所在。我有纯html前端,因此不能使用JSP标记等。。目前,将FE移植到JSP实现过于繁重,我正在尝试解决我的问题。纯HTMl+Spring和我需要访问portlet中的资源。关于从Java注入值还有什么帮助吗?Thankyou.HTML不是服务器端动态语言!您可以使用服务器端动态语言生成HTML,然后由浏览器在客户端呈现。=>你不能“注射”进去!您可以在HTML中使用JavaScript代码在呈现过程中从服务器端获取这些值。在JavaScript部分,我们可以看到如何通过Inject访问服务,我想问一种方法,通过它我可以将值从Java获取到我的js文件中。也许是一个服务电话。我确实认为你提供的链接会帮助我。我将在这些行中探索,并将更新回来。非常感谢。