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

时间:2012-04-20 21:01:32

标签: javascript liferay portlet

我已经下载了一个Jquery Image Slider源代码,想要与我的JSP文件进行整合

这是我的Folder Struture

enter image description here

这就是我包括他们的方式

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<link type="text/css" href="/css/jquery.ui.theme.css" rel="stylesheet" />
<link type="text/css" href="/css/jquery.ui.core.css" rel="stylesheet" />
<link type="text/css" href="/css/jquery.ui.slider.css" rel="stylesheet" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="screen"/>

我在服务器控制台中获得了这个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

2 个答案:

答案 0 :(得分:10)

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

的liferay-portlet.xml中:

<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>

Olaf是对的,您必须将css和js文件夹(以及图片也从WEB-INF移动到docroot文件夹

答案 1 :(得分:7)

几个问题:

  • 如果我在你发布的缩略图中看到了这个,你在WEB-INF中有你的css和js文件夹:任何浏览器都不能请求WEB-INF中的任何内容,所以你永远无法获得它。
  • 如果您创建docroot / css和docroot / js,您仍然会获得404,因为您无法在/css/style.css上找到文件,但在/ your-portlet / css / style中。 css - 在jsps中解决它的一般方法是

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

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