2011-03-31 108 views
0

Im使用styesheet构建JSF页面。当我在Eclipse中使用预览函数时,THey似乎工作,但只要我在IE8上测试它们,它们似乎没有任何影响。CSS不在浏览器上工作,但它在Eclipse上执行

我使用复合视图来指定页面的总体布局,如下所示。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <head> 
     <link rel="stylesheet" type="text/css" href="/css/masterTemplateCSS/masterTemplateCSS.css" /> 


     <title><ui:insert name="title"></ui:insert></title> 
    </head> 

    <body> 

     <div class="left_Sidebar"> 
      <ui:insert name="leftSidebar"> 

      </ui:insert> 
     </div> 

     <div class="bulk_text"> 
      <ui:insert name="content"> 

      </ui:insert> 
     </div> 

     <div class="foot"> 
      <ui:insert name="footer"> 

      </ui:insert> 
     </div>  

    </body> 
</html> 

然后我尝试测试它们。

<ui:composition template="/templates/masterTemplate.xhtml"> 

    <ui:define name="title">Create Screen</ui:define> 

    <ui:define name="leftSidebar"> 
     Left sidebar 
    </ui:define> 
    <ui:define name="content"> 

该模板的工作,我相信css路径是正确的。我也用验证器测试了css文件,他们都检查出来。但它仍然可以在实际浏览器中工作:S

+0

它可以在Firefox等任何其他浏览器中使用吗? – shanethehat 2011-03-31 09:53:28

+1

当你做一个视图时,样式表是否显示:source?当您在浏览器中复制并粘贴该网址时会发生什么?它在其他浏览器中工作吗? – JohnP 2011-03-31 09:54:47

+0

我发现这个问题,不幸的是它没有任何意义......似乎通过定义到Css文件“C:\\ ... \ css.css”的绝对路径使它工作,但我不明白为什么给定路径不会像路径名一样检查路径名。 无论如何感谢您的迅速回复! – David 2011-03-31 11:48:42

回答

5

您需要了解相对URL的工作原理。 CSS文件的相对URL

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

开始与一家领先的斜线,所以它是相对于域根和URL 实际上http://localhost:8080/css/masterTemplateCSS/masterTemplateCSS.css

这显然不会,如果对你的工作web应用程序不在上下文根部署,而是在子上下文路径上部署,如http://localhost:8080/contextname。 CSS文件应该指向http://localhost:8080/contextname/css/masterTemplateCSS/masterTemplateCSS.css

通过

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

更换链接这样,它最终会为/contextname/css/masterTemplateCSS/masterTemplateCSS.css,从而指向正确的绝对URL。

执行不是如您在评论中提到的那样,将其替换为磁盘文件系统路径。当网页通过互联网提供时,这根本不起作用。你未来的网页访问者确实没有你自己的本地磁盘文件系统的CSS文件。

相关问题