我的jsp页面里面正在调用我的xhtml页面。我将xhtml映射到facesServlet并使所有资源servlet处于活动状态,因此如果我点击xhtml页面,它会将所有js和css文件映射得很好。
如果我点击了jsp页面,那么这些文件就没有被引用,firebug会弹出各种各样的js错误。
为了解决这个问题,我将js和css文件添加到了web文件夹中并包含并尝试了它们,包括xhtml和jsp页面,但是那些没有被引用,截至目前,如果我直接点击xhmtl页面然后文件上传工作很好,但如果我去jsp页面然后最终得到js错误,是否有任何其他方式获取js文件。
以下是引用我的js
文件
<%@ include file="/common/taglibs.inc" %>
<html>
<head>
<link rel="stylesheet" href="/css/Main.css" type="text/css">
<link rel="stylesheet" href="/css/Admin.css" type="text/css">
<link rel="stylesheet" href="/css/Home.css" type="text/css">
<script type="text/javascript" src="/js/icefaces/ace-jquery.js"/>
<script type="text/javascript" src="/js/icefaces/ace-components.js"/>
<script type="text/javascript" src="/js/icefaces/icepush.js"/>
<script type="text/javascript" src="/js/icefaces/bridge.js"/>
<script type="text/javascript" src="/js/icefaces/compat.js"/>
<script type="text/javascript" src="/js/icefaces/fileEntry.js"/>
<script type="text/javascript" src="/js/icefaces/jsf.js"/>
<script type="text/javascript" src="/js/icefaces/icefaces-compat.js"/>
<!-- BEGIN SCRIPT TO OPEN RIGHT NOW HELP POPUP, THIS SCRIPT INCLUDES THE FUNCTION OPENRN-->
<
%@ include file="/js/popupRightNow.inc" %>
<!-- END SCRIPT TO OPEN RIGHT NOW HELP POPUP, THIS SCRIPT INCLUDES THE FUNCTION OPENRN-->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<jsp:include page="/navigation/TopNav.jsp" flush="true"/>
<jsp:include page="/trade_entry/UploadBlotter.xhtml"/>
<!--BEGIN BOTTOM NAV -->
<jsp:include page="/navigation/BottomNav.jsp" flush="true"/>
<!--END BOTTOM NAV -->
</body>
</html>
有什么想法,建议吗?
更新
我要求使用jsf2
创建新网页,并且我创建了xhtml
页面,但我希望获得我的应用header
和footer
主题,并且jsp
现在我尝试将jsp
集成到xhtml
中,但正确地建议不要这样做。
尝试了How to include a JSP page in a Facelets page?,但由于无法识别my
代码,因此无效,因此最终尝试创建jsp
页面并在其中包含xhtml
页面工作但不是100%。
现在,如果我直接点击xhtml
页面就可以了,那么它是有效的,但如果我点击了jsp
页面上的header/footer
信息,那么icefaces
或说{{1东西不能100%工作,希望能够澄清我想要实现的目标。
更新2
来自jsf
的 js文件在xhtml页面上被引用,但未在javax.faces.resources
页面上引用。
答案 0 :(得分:2)
是必须下载这些JS / CSS文件的webbrowser。它不是服务器必须加载/包含那些JS / CSS文件。
因此,您在src
和href
属性中指定的路径将相对于当前请求网址进行解析,如您在浏览器的地址栏中所示。它们没有相对于公共webcontent中JSP文件的位置进行解析。
因此,如果您碰巧在请求网址中有上下文路径,那么
然后,例如,您的<link href="/css/Main.css">
将由webbrowser从以下网址下载
虽然实际已经
相应修复。
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/Main.css" type="text/css">
或者,如果您正在使用Facelets
<link rel="stylesheet" href="#{request.contextPath}/css/Main.css" type="text/css">
或者,如果您正在使用JSF 2 <h:outputStylesheet>
(和<h:outputScript>
组件)
<h:outputStylesheet name="css/Main.css" />
(并将/css
和/js
个文件夹放在公共网页内容的/resources
子文件夹中
顺便说一句,以下几行完全没有意义:
<jsp:include page="/trade_entry/UploadBlotter.xhtml"/>
您可以在此处混合使用视图技术。你不能把那个包含在另一个中。 Facelets是JSP的继承者。使用其中一个。您可以将它们混合在1个webapp中,但不能混合在1个视图中。