应用程序中未引用JS文件

时间:2012-04-11 20:28:20

标签: java javascript jsf

我的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页面,但我希望获得我的应用headerfooter主题,并且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页面上引用。

1 个答案:

答案 0 :(得分:2)

是必须下载这些JS / CSS文件的webbrowser。它不是服务器必须加载/包含那些JS / CSS文件。

因此,您在srchref属性中指定的路径将相对于当前请求网址进行解析,如您在浏览器的地址栏中所示。它们没有相对于公共webcontent中JSP文件的位置进行解析。

因此,如果您碰巧在请求网址中有上下文路径,那么

  

http://localhost:8080/somecontextpath/page.jsp

然后,例如,您的<link href="/css/Main.css">将由webbrowser从以下网址下载

  

http://localhost:8080/css/Main.css

虽然实际已经

  

http://localhost:8080/somecontextpath/css/Main.css

相应修复。

<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个视图中。