© Copyright International Business Machines Corporation 2006. All rights reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
建议不要使用下列各项:
- 客户机数据及其相关工具(例如“客户机数据”视图)
- Faces Client 组件
<odc:dataGrid>
(数据网格)<odc:webService>
(Web Service)<odc:clientData>
<odc:clientBinder>
树
<odc:tree>
和图表<odc:graphDraw>
已能够使用服务器数据。
如果导入 V7 之前版本的 JSF 应用程序,而未迁移 JSF JAR,然后继续开发应用程序,则 V7 中的新标记将不会包括在项目 JAR 中,因此在运行时将不可用。请确保迁移 V7 之前版本的 JAR。
树控件的
<odc:treeNodeAttr>
标记在与 SDO 数据和 WDO 数据绑定时使用不同的 className 属性值。在将项目从使用 WDO 的服务器(例如 WebSphere® Application Server 5.1)迁移到使用 SDO 的服务器(例如 WebSphere Application Server 6.1)之后,最简单的处理方法是删除然后重新创建所有树控件。
在 V6.0 中,如果将
<hx:commandExButton>
的类型设置为 Submit,并且它带有标签和单一背景图像(例如,value="submit" image="button.gif"
),则将仅呈示该图像(而不会同时呈示该图像和标签)。在 V7.0 中,已解决此问题。这意味着,使用 V7.0 时,同时带有标签和单一背景图像的按钮的呈示方式与 V6.0 中不同。同样,如果将
<hx:commandExButton>
的类型设置为Reset
,并且它带有单一背景图像或者同时带有背景图像和标签,则将仅呈示该图像,并且会将该按钮视为提交按钮,即忽略该按钮的类型。在 V7.0 中,已解决此问题。这意味着,将类型设置为Reset
的按钮现在将复位页面,而不是提交页面。
<jspPanel>
标记属性style
和styleClass
不再可用。这些属性不用于呈示 JSP 面板组件。如果导入在先前版本的本产品中创建的 JSF 应用程序,则
<jspPanel>
标记将显示错误。要解决这些错误,请在“源代码”视图中编辑 JSP 源代码并除去项目中所有<jspPanel>
标记中的style
和styleClass
属性。
如果将项目导入到使用先前版本的产品创建的工作空间中,则可能会弹出一个对话框,该对话框指出已安装 Faces 支持,但没有为该项目选择目标运行时。在某些情况下,此警告不准确。迁移过程完成后,将正确地定义运行时。要检查是否设置了运行时,请用鼠标右键单击项目 > 属性,然后选择目标运行时。如果任何已定义的服务器旁边显示了复选框,则不需要执行进一步的操作。否则,请选中其中一个服务器。
注意:如果客户机数据模型是根据同一个页数据节点或多个同名页数据节点创建的,则不需要采用这个变通方法。
在 V7.0 中,如果页面上有多个根据同一个 Bean 类创建的客户机数据模型,则生成或重新生成这些模型后,将错误地为第二个模型创建第二个 Ecore 和 Emap 文件。按照迁移指南的说明,迁移客户机数据项目时应该重新生成客户机数据模型,因此,此问题会对页面包含多个客户机数据模型的已迁移项目产生影响。下面是一种简单的情况:
- 创建两个基于 java.util.Date Bean 的页数据,例如 myDate1 和 myDate2。
- 对于每个页数据,按以下顺序创建同名的客户机数据模型:先创建 myDate1,然后创建 myDate2。
变通方法:要使页面同时适用于这两种模型,请从 com.ibm.dynwdo4jsmediators 包中删除 myDate2.ecore 和 myDate2.emap,然后删除 OdysseyBrowserFramework.properties 文件中的相应条目。
客户机数据会将大量 JavaScript™ 输出到页面中。在前发行版中,未对 JavaScript 进行编码。这意味着,如果在多个使用同一个页数据源的 Portlet 中使用客户机数据,则页面中所有 Portlet 的 JavaScript 输出都相同。
当两个 Portlet 都与客户机数据绑定时,这种行为将使它们表现为与同一个客户机数据对象绑定。这是因为,第二个 JavaScript 段将覆盖第一个 JavaScript 段。这两个 Portlet 还能够进行相互作用,即任何一个 Portlet 中的更改会同时在这两个 Portlet 中体现。
如果要让页面上多个使用客户机数据的 Portlet 以相互独立的方式工作,这就成为一个问题。如果同一个页面上有两个具有不同页数据源的 Portlet 使用客户机数据,则将发生 JavaScript 错误。这还会导致其中一个 Portlet 无法呈示。
要解决这些问题并允许客户机数据 Portlet 通过 WSRP 运行,必须对客户机数据 JavaScript 变量进行编码,以使它们对于每个 Portlet 来说都是唯一的。这样,客户机数据 JavaScript 段就能够相互独立地工作。
在 V7.0 中,将对所有客户机数据进行编码。
如果要在页面上的多个 Portlet 之间共享客户机数据,则需要更新 web.xml 并在其中指定下列上下文参数:
<context-param>
<param-name>com.ibm.faces.ENCODE_DATA</param-name>
<param-value>false</param-value>
<description></description>
</context-param>通过将 <param-value> 设置为 false,可以除去客户机数据编码。
使用 Encode_Data 参数及其对使用了页数据的图表组件和数据树组件的影响
图表和数据树通过在页面上放置 XML 数据对象来使用页数据。图表和数据树的页数据与那些组件的客户机数据紧密联系。缺省情况下,此数据将进行编码。如果在 web.xml 文件中设置了下面显示的 <context-param>(此参数通常用于除去客户机数据编码),则还将除去图表和数据树的页数据编码。其他使用页数据的组件不受影响。如果保持页数据处于未编码状态,并且页面上有两个都包含图表或数据树的 Portlet,则会引起问题。这些错误包括 JavaScript 错误和/或其中一个 Portlet 无法正确显示。
要让客户机数据对此数据进行编码,从而允许页面上的两个 Portlet 以相互独立的方式运行以及允许启用 WSRP 支持,则需要从 web.xml 中除去以下 <context-param> 或者将 <param-value> 设置为 true:
<context-param>
<param-name>com.ibm.faces.ENCODE_DATA</param-name>
<param-value>true</param-value>
<description></description>
</context-param>
在页面顶部有以下内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
这将导致 Web 浏览器进入标准方式。在标准方式下,
HTML
和body
元素紧贴它们的内容,而不像在 Quirks 方式(缺省 HTML 方式)下那样填充窗口。当在页面中单独放置一个选项卡式面板并将其高度设置为百分比值时,这将导致窗格高度发生显示问题。
要解决此问题,请将该选项卡式面板放在设置了高度的容器中,或者将页面顶部的 doctype 更改为:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
在标准方式下,当 doctype 设置为以下内容时,选项卡会发生显示问题:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
通过将 doctype 更改为以下内容,可以更正此错误:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
使用阿拉伯语日历时,
<hx:convertDateTime>
标记无法生成正确的 JavaScript。因此,客户端验证功能、输入提示功能、日期选取器辅助控件和微型日历也无法正确地工作。对生成的 JavaScript 进行初始化时将显示错误,或者该组件无法正确地工作。变通方法:不要打开客户端验证功能或提示功能。如果将阿拉伯语日历与转换器配合使用,则不要打开日期选取器辅助控件。
如果面向 WebSphere® 服务器运行时,则确保为 Web 项目选择了 WebSphere Web 共存项目构面。
变通方法:创建项目时,在“动态 Web 项目”向导的第二页上选择构面,或者,如果该项目已存在,则通过项目属性对话框的“项目构面”页选择构面。创建面向 WebSphere 服务器的 Web 项目时,如果从项目向导第一页上的“配置”下拉列表中选择“Faces 项目”或“带有 XDoclet 的动态 Web 项目”,则不会自动选中 WebSphere Web 共存构面。您可以转到向导的下一页并选择此构面。如果从“配置”列表中选择“<定制>”,并且面向 WebSphere 运行时,则将正确地选择构面。
当在
<hx:dataTableEx>
中使用<hx:columnEx>
,并且启用了垂直滚动功能(即设置了 scrollSize)时,如果将表中一列或多列的宽度设置为以百分比计,并且浏览器将页面的 doctype 解释为标准 W3C(而不是传统 W3C),则所呈示表中的列头与列内容可能会未对齐。例如,如果 doctype 包含loose.dtd
声明,则将发生这种情况。
变通方法:使用固定列宽来代替百分比列宽,或者确保 doctype 解析为传统
doctype,例如除去 loose.dtd 声明。
在
<hx:panelDialog>
中,如果将定位方式(水平定位或垂直定位)设置为relative
,并且用于进行定位的基本标记(即对话框进行定位时所参照的标记)在一个页面中,而且该页面已进行滚动以显示该标记并且未滚动到顶部,则显示该对话框时,它的位置可能不正确(通常是距离顶部或左边太远)。变通方法:如果需要进行相对定位,则确保基本标记靠近页面顶部。此外,也可以使用其他任何一种定位方式。
如果数据表(
<h:dataTable>
或<hx:dataTableEx>
)在支持 AJAX 的面板中,并且允许选择行(该表包含<hx:inputRowSelect>
),则通过 AJAX 重新访存该表后,选择列中的复选框将无法正常工作。这些复选框仅在第一次呈示时工作正常。变通方法:此问题目前没有变通方法。请不要将该表放到支持 AJAX 的面板中。
在 Internet Explorer(IE)中,如果在目标页面中使用了 source 属性来指定所要检索的面板标识,并且此标识与源页面中与
<hx:ajaxExternalRequest>
相关的面板标识不同,则<hx:ajaxExternalRequest>
可能无法正常工作。例如,<hx:panel id="panel1"><hx:ajaxExternalRequest source="panel999" /><hx:panel>
。只有在 IE 中并且仅当目标面板是网格、框或布局(呈示为 HTML 表的面板)时,才会发生此问题。变通方法:确保这两个标识相同,或者将目标面板包装在面板组中。
<hx:ajaxRefreshRequest>
、<hx:ajaxRefreshSubmit>
、<hx:ajaxExternalRequest>
和<hx:inputHelperTypeahead>
的inProgresss
属性不起作用。对此属性设置值是不起作用的。为了确保与将来发行版兼容,请不要设置值。
如果将
<hx:inputHelperTypeahead>
连接到某个输入字段,并且在该字段中输入了空格字符和/或诸如 & 符和百分号之类的标点符号,则构造的建议列表将不包括任何包含这些字符的“匹配项”。例如,如果用户输入了 %,则不会返回任何匹配项,即使所使用的“字典”包含以 % 开头的单词亦如此。
从 Firefox V1.5.0.8 开始,对某些 HTML DOM 属性的行为作了更改,这可能导致 Firefox 中呈示的
panelDialog
的位置不正确。此问题通常是在对话框以相对方式定位时发生的,但在其他情况下,当主体内容的尺寸“小于”浏览器窗口高度时(即,当页面无法在垂直方向上进行滚动时),也会发生此问题。变通方法:对主体添加内容(此内容甚至可以是设置了高度的空白位置,例如 <div>)以使垂直滚动条始终显示在页面中,这可能能够解决此问题(能否解决问题取决于浏览器窗口和内容的确切尺寸)。
如果 styleClass 设置为除缺省类
pagerDeluxe
以外的值,则<hx:pagerDeluxe>
无法呈示正确的 HTML 标记。分页控件中的按钮将始终使用缺省类名进行呈示。变通方法:
- 不要更改缺省类名 pagerDeluxe。
- 如果使用了另一个类名,请调整用于对按钮上呈示的类名进行处理的 CSS。