我有 jsp 页面,其中正在调用我的 xhtml 页面。我将 xhtml 映射到 facesServlet 并使所有资源 servlet 处于 Activity 状态,因此如果我点击 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
页面,那么它就可以工作,但是如果我点击带有 header/footer
信息的 jsp
页面然后 icefaces
或说 jsf
东西不能 100% 工作,希望我能够澄清我想要实现的目标。
更新2
来自javax.faces.resources
的 js 文件在 xhtml 页面上可以正常引用,但在 jsp
页面上未引用。
最佳答案
网络浏览器必须下载这些 JS/CSS 文件。服务器不需要加载/包含这些 JS/CSS 文件。
因此,您在 src
中指定的路径和href
属性是相对于当前请求 URL 进行解析的,如您在浏览器地址栏中看到的那样。它们不会相对于公共(public) Web 内容中 JSP 文件的位置进行解析。
所以,如果您碰巧在请求 URL 中有一个上下文路径,如下所示
例如你的<link href="/css/Main.css">
将由网络浏览器从以下 URL 下载
虽然它实际上应该是
相应地修复它。
<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
文件夹放入公共(public)网络内容的/resources
子文件夹中)
顺便说一句,下面这行完全没有意义:
<jsp:include page="/trade_entry/UploadBlotter.xhtml"/>
您在这里混合了 View 技术。你不能将一个包含在另一个中。 Facelets 是 JSP 的继承者。使用其中之一。您可以将它们混合在 1 个网络应用程序中,但不能在 1 个 View 中。
关于java - 应用程序中未引用的 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113436/