Javascript 无法在Liferay Portlet JSP页面中包含css和JS文件

Javascript 无法在Liferay Portlet JSP页面中包含css和JS文件,javascript,liferay,portlet,Javascript,Liferay,Portlet,我已经下载了一个Jquery图像滑块源代码,并希望与我的JSP文件集成 这是我的文件夹结构 这就是我包括他们的方式 我在服务器控制台中得到这个404 20:50:04,625 WARN [404_jsp:109] /css/jquery.ui.theme.css 20:50:04,640 WARN [404_jsp:109] /css/jquery.ui.core.css 20:50:04,640 WARN [404_jsp:109] /css/jquery.ui.slider.css 2

我已经下载了一个Jquery图像滑块源代码,并希望与我的JSP文件集成

这是我的文件夹结构

这就是我包括他们的方式


我在服务器控制台中得到这个404

20:50:04,625 WARN [404_jsp:109] /css/jquery.ui.theme.css
20:50:04,640 WARN [404_jsp:109] /css/jquery.ui.core.css
20:50:04,640 WARN [404_jsp:109] /css/jquery.ui.slider.css
20:50:04,656 WARN [404_jsp:109] /css/style.css
20:50:04,671 WARN [404_jsp:109] /js/cufon-yui.js
20:50:04,671 WARN [404_jsp:109] /js/GreyscaleBasic.font.js
20:50:04,687 WARN [404_jsp:109] /js/jquery.easing.1.3.js
几个问题:

  • 如果我在您发布的缩略图中正确地看到了这一点,那么您的css和js文件夹位于WEB-INF中:任何浏览器都无法请求WEB-INF中的任何内容,因此您将永远无法获得它
  • 如果您创建docroot/css和docroot/js,您仍然会得到404,因为您在/css/style.css上找不到文件,但是在/your portlet/css/style.css中-在JSP中处理它的一般方法是

    < link rel="stylesheet" href="<%=request.getContextPath()%>/css/style.css"/>
    

延迟编辑:
request
在portlet的JSP上并不总是有效的,因为根据JSP规范,它是一个HttpServletRequest。在门户世界中,这通常与portlet的当前路径无关。因此,我建议使用Mark的答案,而不是我的答案:liferay-portlet.xml包含与当前portlet相关的文件。自Liferay 7.0以来,您可以使用与Liferay-portlet.xml等效的OSGi组件

将链接放入
liferayportlet.xml
中,让liferay加载css和javascript。这是更好的方法(例如,如果用户希望将两个portlet放在一个页面上)

liferay-portlet.xml:

/css/main.css
/js/main.js

Olaf是正确的,您必须将css和js文件夹(以及图像)从
WEB-INF
移动到
docroot
文件夹

交叉引用到Liferay论坛中的相同问题这是最好的(仅限Liferay)解决方案,+1.Ya但为什么要命名页眉portlet和页脚portlet??(供您参考,我在第页上显示了6个portlet)这有什么区别吗?)1)有,与liferayportlet.xml2中的/css/main.css有区别。是不同的portlet,还是相同portlet的不同实例?+1用于liferay-portlet.xml引用。在我的回答中,我推翻了这一点,并以某种方式假设脚本和链接标签进入主题,尽管它没有这样说。通过阅读liferay.com上的交叉引用线程(请参阅我对该问题的评论),很明显,除非将其添加到主题中,否则应该执行此操作。感谢您的请求。getContextPath(),这是非常有价值的信息。感谢当我的解决方案工作时,它确实非常有用,马克使用liferay-portlet.xml的解决方案实际上更值得推荐。我的问题是直接针对你的问题“我如何正确地写这个”,而马克回答了一个未被问到的问题“我如何优雅地解决潜在的问题”