java - 应用程序中未引用的 JS 文件

标签 java javascript jsf

我有 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页面,但我想获取我的应用程序headerfooter 主题和那些在 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 中有一个上下文路径,如下所示

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

例如你的<link href="/css/Main.css">将由网络浏览器从以下 URL 下载

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文件夹放入公共(public)网络内容的/resources子文件夹中)

<小时/>

顺便说一句,下面这行完全没有意义:

<jsp:include page="/trade_entry/UploadBlotter.xhtml"/>

您在这里混合了 View 技术。你不能将一个包含在另一个中。 Facelets 是 JSP 的继承者。使用其中之一。您可以将它们混合在 1 个网络应用程序中,但不能在 1 个 View 中。

关于java - 应用程序中未引用的 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113436/

相关文章:

java - f :validateRequired does not work on Tomcat

java - JPA 和 JSF : right way of injecting EntityManager

java - 为什么我的 alpha-beta 剪枝实现不起作用?

java - JMS 2 MDB 监听多个队列

javascript - 简单的 jquery 第二个计数器

javascript - 如果它是一个精确的数字,如何将字符串转换为 float ,而不仅仅是在javascript中以数字开头

java - 数组填充为 'null' - LibGDX

java - java将一维数组中的数据传输到二维数组中

javascript - 如何查询动态数量的别名?

jsf - java.lang.NoSuchMethodError : javax. faces.component.UIComponent.getPassThroughAttributes(Z)Ljava/util/Map;迁移到 JSF 2.2 后