这是来自jsf-ibm.jar(MANIFEST.MF文件)的数据,以便提供信息 关于正在使用的应用程序正在使用的jsf版本:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: IBM Corporation
Specification-Title: Java Server Faces
Implementation-Title: JSF Widget Library (JWL) - Base
Implementation-Version: JWL v3_1_13
Implementation-Vendor: IBM
Build-Version: 20120307.2306
Build-Date: March 7 2012
Copyright-Info: Copyright (c) 2003,2008, International Business Machin
es Corporation. All Rights Reserved.
我坚持追逐并解决这种奇怪的应用程序行为,只会在IE中发生 有链接,当点击它时,对话框应该打开(包含一些可以编辑和保存的数据的表格等)。但是当点击链接时,对话框会打开,但整个应用程序都是我称之为“白云”的内容。整个应用程序和对话框都是模糊的,没有任何内容可以点击。然后,我点击浏览器(IE)刷新按钮,它关闭对话框并返回包含链接所在数据列表的页面 我试图使用IE开发人员工具,并发现当删除id为HX_DLG_SCRATCH_0的元素时,此白色云消失,对话框可以是例如关闭,但应用程序的背景仍然存在("正常行为"例如Firefox将是非阻止对话框,但应用程序的背景为灰色,对话框后面没有应用程序元素)。该元素由ibm-jsf生成 这是来自IE DOM资源管理器的元素:
<BODY bodyUnloadEventNum="1" marginwidth="0" marginheight="0" hasbox="2" boxItem=" [object]"><DIV id=HX_DLG_SCRATCH_0 style="FONT-SIZE: 1px; BORDER-TOP: 0px; HEIGHT: 1166px; BORDER-RIGHT: 0px; WIDTH: 1676px; BORDER-BOTTOM: 0px; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; LEFT: 0px; FILTER: progid:DXImageTransform.Microsoft.Alpha(enabled=false); MARGIN: 0px; BORDER-LEFT: 0px; Z-INDEX: 10001; TOP: 0px; PADDING-RIGHT: 0px; BACKGROUND-COLOR: #e2e2e2" name="HX_DLG_SCRATCH_0" hasbox="2" boxItem="[object]"></DIV></BODY>
</html>
这是链接所在页面的jsp代码的一部分:
<h:outputLink id="link1" rendered="#{not empty book.bookType}">
<h:outputText id="text1" value="#{msg[book.bookType.tag]}"
styleClass="outputText">
</h:outputText>
<hx:behavior event="onclick" behaviorAction="get;show;stop" id="behaviour1"
targetAction="subview1:panelForm2:editBookDialog;subview1:panelForm2:editBookActionDialog"
onActionFunction="setvalue('subview1:panelForm2:newItem', 'edit'); setvalue('subview1:panelForm2:itemId', '#{book.bookId}');"></hx:behavior>
</h:outputLink>
这是使用ajax的editBookActionDialog.jsp对话框的jsp代码的一部分。
<hx:ajaxRefreshRequest id="ajaxRefreshRequest1"
target="subview1:panelForm2:editBookActionDialog"
params="itemId;newItem"
onstart="showProgressBar();" oncomplete="hideProgressBar();">
</hx:ajaxRefreshRequest>
我无法追踪为什么只会在IE中发生这种情况,在Firefox中它运行正常
请非常感谢任何形式的指导或信息
非常感谢,提前,
mismas
[编辑]
只是现在发生在我身上的一个想法
也许这个&#34;白云&#34;应该是那个灰色的背景,但在IE中,某些东西与css混在一起......
在我看来,它可能是正确的线索,因为没有javascript错误或任何其他错误...
如果你认为我错过了什么,请纠正我...... thnx!
[EDIT2 - 重要]
我找到了它的原因!
这是一个CSS问题。
position:这个糟糕的HX_DLG_SCRATCH_0元素的绝对值导致了这个问题
你能否告诉我如何覆盖这个ibm-jsf生成的位置:绝对到位:相对?
另外,我想补充一下这个&#34; hack&#34;仅适用于IE。我知道这不是很好,但显然是整个应用程序的精神:)
TNX!
答案 0 :(得分:0)
<强>咆哮:强>
对不起,我很快就指责了ibm-jsf,它是一个用户(编写代码的开发人员)问题
然而,在挖掘解决方案时,我有机会深入研究jsf,我只能说一件事:它很可怕而且我讨厌它的胆量。
咆哮结束:D
真正的问题是在javascript中,Mozilla Firefox使页面变得不那么痛苦,但IE崩溃了(阻止了一切)。
所以,我有一个jsp页面有一个只在某些条件下呈现的复选框,但在某些hx标签中有custum javascript函数调用(在openDialog()函数之前),它在该特定复选框上运行一些验证。
因为,在这种情况下,生成的HTML中实际上不存在该复选框,并且调用了此javascript函数,导致应用程序出现奇怪/不良行为,难以追踪。
所以解决方案是添加一个条件测试(与复选框渲染相同)来调用javascript函数和openDialog(),如果复选框应该被渲染,否则只调用openDialog()。
就是这样,希望它可能会以某种方式帮助有同样“白云”问题的人......(我对此表示怀疑,但不过在这里它是:)
的 P.S。强>
很奇怪,IE开发人员工具没有抱怨任何javascript错误...
我不知道为什么会这样......(如果有人有线索,我会很高兴在这里...... :)
最好的问候,
mismas