JSF的外部CSS
向jsf添加外部CSS文件的语法是什么 两种方法都试过了,没用 一,JSF的外部CSS,css,jsf,external,Css,Jsf,External,向jsf添加外部CSS文件的语法是什么 两种方法都试过了,没用 一, @导入url(“/styles/decoration.css”); 二, 我从未使用过第一个,但第二个在语法上是有效的,从技术上讲应该可以使用。如果它不起作用,那么href属性中的相对URL就是错误的 在相对URL中,前导斜杠/指向域根。因此,如果JSF页面是由http://example.com/context/page.jsf,CSS URL将绝对指向http://example.com/styles/decorati
@导入url(“/styles/decoration.css”);
二,
我从未使用过第一个,但第二个在语法上是有效的,从技术上讲应该可以使用。如果它不起作用,那么
href
属性中的相对URL就是错误的
在相对URL中,前导斜杠/
指向域根。因此,如果JSF页面是由http://example.com/context/page.jsf
,CSS URL将绝对指向http://example.com/styles/decoration.css
。要知道有效的相对URL,您需要知道JSF页面和CSS文件的绝对URL,并从另一个中提取一个
假设您的CSS文件实际位于http://example.com/context/styles/decoration.css
,则需要删除前导斜杠,使其相对于当前的上下文(即page.jsp
中的上下文):
我想巴卢斯克可能有你的答案 不过,我想补充几点: 假设您正在web应用程序的子目录中运行。 根据我的经验,您可能希望尝试以下方法:
“${facesContext.externalContext.requestContextPath}/”
链接将帮助您立即返回到上下文的根目录
编辑:从
'href=”中删除开始的/
/${facesContext.ex..
。如果应用程序在根上下文中运行,CSS url以/
开头,浏览器无法找到CSS,因为它被解释为http://css/style.css
我认为塞尔吉奥尼的问题是双重的
首先,正如BalusC所说,所谓的根相对实际上是域相对的,因此,在示例中是相对于http://example.com/
而不是http://example.com/context/
所以你必须具体说明
<link rel="stylesheet" type="text/css" href="${request.contextPath}/styles/decoration.css" />
顺便说一句,巴卢斯克,恭喜你,这是我第一次看到正确的解释!我费了很大劲才发现这一点
但是,如果您想简化并提出以下建议:
<link rel="stylesheet" type="text/css" href="styles/decoration.css" />
假设样式目录是当前页面的同级目录,则可能存在第二个问题:
然后你进入了相对URL方法,我知道你是通过转发而不是重定向进入这个页面的,你的浏览器可能被愚弄了,无法遵循相对路径
要解决第二个问题,必须添加以下内容:
<head>
<base href="http://${request.serverName}:${request.serverPort}${request.contextPath}${request.servletPath}" />
基本元素必须位于任何链接之前
通过base命令,您可以告诉浏览器您的实际位置
希望能有帮助
顺便说一句,在这个奇妙的jsf世界里,还有一件奇怪的事情:
要从页面链接到其facelet模板,根相对链接这次包括上下文,因此:
<ui:composition template="/layouts/layout.xhtml">
这确实链接到http://example.com/context/layouts/layout.xhtml
而不是http://example.com/layouts/layout.xhtml
类似于
或
Jean-Marie Galliot尝试下面的代码在jsf页面中导入css。它肯定会工作
<style media="screen" type="text/css">
@import "#{facesContext.externalContext.request.contextPath}/css/Ebreez.css"
</style>
@导入“#{facesContext.externalContext.request.contextPath}/css/Ebreez.css”
更新后的JSF 2.0方法更加整洁。而不是:
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/css/compass.css"/>
您现在可以执行以下操作:
<h:outputStylesheet library="css" name="compass.css"/>
样式表资源应该放在
resources\css.
中,其中的资源与WEB-INF处于同一级别。奇怪的是,这没有帮助,我们将尝试下面提出的方法,并很快写下结果告诉JSF页面和css文件的绝对URL,然后我们可以帮助进行数学计算。JSF:c:\sample\src\main\webapp\store.xhtml css:c:\sample\src\main\webapp\styles\decoration.cssI没有要求绝对的文件系统路径。我要求的是绝对的URL。你在浏览器地址栏中看到的那个。只要
就足够了。至于“bizzare thing”“,这是Facelets的记录行为。它们始终与上下文根相关,而不是与域根相关。什么是上下文根,什么是域根?同时请记住所解释的库属性的正确使用。”
<style media="screen" type="text/css">
@import "#{facesContext.externalContext.request.contextPath}/css/Ebreez.css"
</style>
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/css/compass.css"/>
<h:outputStylesheet library="css" name="compass.css"/>