从XHTML引用css的问题

时间:2010-07-02 13:37:49

标签: xhtml jsf facelets

在我的JSF应用程序(我的面孔1.2.3)中,我将css文件称为

<link href="css/nav.css" type="text/css" rel="stylesheet" />, 

当使用浏览器将呈现的HTML作为HTML文件访问但未在我的自定义servlet容器内访问时,这是有效的。

虽然相对路径是正确的,但它没有正确引用。然后我尝试了

<link href="../css/nav.css" type="text/css" rel="stylesheet" />

它在浏览器中工作,而在其他一些浏览器中没有。

我被告知我应该使用facelets.DEVELOPMENT“= true以使其工作,它在Dev Env中工作并且它没有在测试环境中(将会有一些继承的属性!!!并且不会使用所有内容我的申请)

我对这些附带技术有一些了解,但不是专家。想知道什么是问题,在哪里? - Servlet容器,XHTML,Facelets,JSF Impl?

任何想法 - 可能是什么问题?

3 个答案:

答案 0 :(得分:1)

相对<link>网址相对于请求网址,因为它位于客户端,位于webbrowser的地址栏中(webbrowser即负责加载CSS文件的人) ),它与文件夹结构无关,因为它在服务器端。

因此,如果请求网址是http://example.com/context/page.jsf,那么href="css/nav.css"引用的CSS将由http://example.com/context/css/nav.css加载,而href="../css/nav.css"引用的CSS将加载http://example.com/css/nav.css {3}}

如果您仍然坚持这一点,那么您需要发布绝对网址,您可以使用该网址成功地请求有问题的网页 CSS文件本身。通过这种方式,我们可以向您解释您应该为相关页面使用的CSS文件的相对URL。

答案 1 :(得分:1)

问题可能是您的应用程序对请求URL不是绝对的 让我们假设您通过以下方式访问您的应用程序:

http://localhost/my-app/

现在当你尝试加载如上所述的资源时

<link href="css/nav.css" type="text/css" rel="stylesheet" />

将由

加载
http://localhost/css/nav.css

我建议在引用资源时使用上下文路径属性。

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

答案 2 :(得分:0)

这里的一个可能的解决方案是使用根相对路径,例如。

/MyCSSFolder/myfile.css

在大多数情况下,这可以解决问题。