2011-09-19 78 views
5

我一直在我们的应用程序中遇到一个奇怪的bug,并且无法找到解决方案,即使在谷歌和stackoverflow上也没有找到符合我的问题的东西。CSS样式有时仅适用于jsf页面上的页面刷新后?

首先,应用程序安装的简短摘要:

  • ICEfaces的1.8.1 & JSF 1.2
  • 缝2.1.1
  • 的Java 1.6,更新20
  • 在JBoss 4.2上运行。 2.GA
  • 应用程序部署为EAR文件

如果您需要任何其他信息,请告诉我,我会尽力弄清楚并提供给您。

现在,来这里的问题:

有时(在应用程序随机页),创建JSF生成的HTML代码发送到浏览器, 但没有样式表都包括在内。刷新页面(按F5)后,页面将按其应用的样式显示,并应用所有样式。 在某些页面上,错误似乎是可重现的,而在其他页面上,它只是随机发生。 Bug(?)出现在Opera(11.51,没有测试过早期版本)和Firefox(应用程序在3.6中正常工作,但在Firefox 6中不正常)。 IE9正常工作。

该网站由构成应用程序布局的顶级页面(template.xhtml)组成,所有其他网站都是通过ui包含的 :include-Tags。

即使页面呈现正确的,样式不计入头,它们分别是:

进入头标记,样式是通过

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

这使得对包括放入身体标记,呈现为:

<body> 
<link type="text/css" rel="stylesheet" href="/myApp/stylesheet/icefaces_style.css"> 
<link type="text/css" rel="stylesheet" href="/myApp/stylesheet/screen.css"> 
</body> 

如果渲染不正确,则不包含任何样式。实际上,template.xhtml页面的head-tag没有包含 到渲染的响应中。

你有什么建议去哪里寻找更多或可能的解决方案?提前致谢!

+1

Icefaces正在比较呈现的页面与其以前的版本,然后它发送变量作为xml中的部分更新。你分析过这些XML响应吗?将它们包含在这里 - 您可以使用萤火虫访问它。另外,请确保您不依赖“查看页面源代码” - 它在大多数浏览器中无法正常使用ajax。 – mrembisz

+1

我找不到任何JSF或表达式语言文档, 声明表达式是否允许在表头中。 但是我之前在头文件中没有看到表达式,并且在处理页面时我并不感到惊讶,ICEfaces会被它弄糊涂。 –

+0

@SimonC哇 - 简单地将风格标签移动到身体中,至少我无法重现它。看起来,Icefaces理解表达式的标题,但只有当整个页面刷新时 - 在部分更新中,它们似乎迷失了......发布您的建议作为答案,我会接受它。 – Volker

回答

2

我找不到任何JSF或表达式语言文档,指出是否允许在表头中使用表达式。但是我之前在头文件中没有看到表达式,并且在处理页面时ICEfaces会被它弄糊涂并不感到惊讶。将CSS样式移动到主体中,然后从ICEfaces部分更新到Web浏览器将会工作。