我一直在我们的应用程序中遇到一个奇怪的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没有包含 到渲染的响应中。
你有什么建议去哪里寻找更多或可能的解决方案?提前致谢!
Icefaces正在比较呈现的页面与其以前的版本,然后它发送变量作为xml中的部分更新。你分析过这些XML响应吗?将它们包含在这里 - 您可以使用萤火虫访问它。另外,请确保您不依赖“查看页面源代码” - 它在大多数浏览器中无法正常使用ajax。 – mrembisz
我找不到任何JSF或表达式语言文档, 声明表达式是否允许在表头中。 但是我之前在头文件中没有看到表达式,并且在处理页面时我并不感到惊讶,ICEfaces会被它弄糊涂。 –
@SimonC哇 - 简单地将风格标签移动到身体中,至少我无法重现它。看起来,Icefaces理解表达式的标题,但只有当整个页面刷新时 - 在部分更新中,它们似乎迷失了......发布您的建议作为答案,我会接受它。 – Volker