0

我有 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我尝试寻找集成jspxhtml但正确地建议不要这样做。

尝试过如何在 Facelets 页面中包含 JSP 页面?但这也不起作用,因为my标签无法识别,所以最后尝试创建jsp页面并xhtml在其中包含页面,这似乎有效但不是 100%。

因此,就目前而言,如果我xhtml直接点击页面,那么它可以工作,但是如果我点击jsp带有header/footer信息的页面,icefaces或者说jsf东西不能 100% 工作,希望能够澄清我想要实现的目标。

更新 2

来自的 js 文件javax.faces.resources在 xhtml 页面上被很好地引用,但在jsp页面上没有被引用。

4

1 回答 1

2

必须下载那些 JS/CSS 文件的是网络浏览器。不是服务器必须加载/包含那些 JS/CSS 文件。

因此,您指定的路径srchref属性是相对于当前请求 URL 解析的,如您在浏览器的地址栏中看到的那样。它们不会相对于公共 Web 内容中 JSP 文件的位置进行解析。

所以,如果你碰巧在请求 URL 中有一个上下文路径,像这样

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

then for example your <link href="/css/Main.css"> would be downloaded by the webbrowser from the following URL

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

while it should actually have been

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

Fix it accordingly.

<link rel="stylesheet" href="${pageContext.request.contextPath}/css/Main.css" type="text/css">

Or if you're using Facelets

<link rel="stylesheet" href="#{request.contextPath}/css/Main.css" type="text/css">

Or if you're using JSF 2 <h:outputStylesheet> (and <h:outputScript> components)

<h:outputStylesheet name="css/Main.css" />

(and put the /css and /js folders in /resources subfolder of public webcontent)


By the way, the following line makes absolutely no sense:

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

You're mixing view technologies here. You can't include the one in the other. Facelets is the successor of JSP. Use the one or the other. You can mix them in 1 webapp, but not in 1 view.

于 2012-04-12T01:55:47.553 回答