我在Liferay / Tomcat服务器上部署了一个portlet。 portlet.xml 正在调用init param“/index.html”。这个文件在我的门户网站上渲染得很好。
我的/css
和/js
文件夹与/ docroot下的 index.html 位于同一级别。
我将它们链接起来:
<script type="text/javascript" src="js/somejs.js"></script>
<link rel="stylesheet" type="text/css" href="css/mystyles.css">
文件结构:
/docroot/
/css/
/js/
index.html
然而,我得到了这些404的
"NetworkError: 404 Not Found - http://localhost:8080/web/guest/js/somejs.js"
"NetworkError: 404 Not Found - http://localhost:8080/web/guest/css/mystyles.css"
我的文件夹不会被识别,除非我输入这个明确链接我的portlet,如下所示:
<script type="text/javascript" src="MyPortlet/js/somejs.js"></script>
这是不可取的,因为将来可能会更改portlet的名称,我将不得不重命名所有<script>
和<link>
个引用。
任何想法都可以解决这个问题?我是否需要全局上下文路径?
答案 0 :(得分:3)
解决方案1(快速修复):在JSP中添加以下代码
<script src="<%=renderRequest.getContextPath()%>/js/somejs.js"></script>
<link href="<%=request.getContextPath()%>/css/mystyles.css" rel="stylesheet"/>
解决方案2(Liferay推荐):在liferay-portlet.xml
中添加以下代码,让Liferay加载css&amp; js文件。
<header-portlet-css>/css/mystyles.css</header-portlet-css>
<footer-portlet-javascript>/js/somejs.js</footer-portlet-javascript>
但我建议将所有js和css文件保存为主题并从那里访问