这篇文章摘译自IceFaces官方的blog,文章中提到的LazyDataModel也适用于其它的JSF组件库中的Table组件。原文地址:http://blog.icefaces.org/blojsom/blog/default/2008/11/05/Lazy-Loading-a-JSF-DataModel-for-an-ICEfaces-ice-dataTable/
数据迭代组件,比如 ICEfaces ice:dataTable
,一般有两个属性——value和var。value是要显示的数据集,一般绑定到managed-bean的属性上,var表示迭代过程中的当前行的变量,可以通过EL表达式访问:
<ice:dataTable value="#{modelBean.rows}" var="row">
<ice:column>
<f:facet name="header">
<ice:outputText value="#{msgs.firstName}" />
</f:facet>
<ice:outputText value=#{row.firstName}" />
</ice:column>
...
</ice:dataTable>
value绑定到 ModelBean.getRows()这个方法,这个方法可以返回多种类型的值,不过通常返回的是java.util.List类型:
public List<Row> getRows() {...}
其实在底层value属性绑定的是一个JSF DataModel
类型的对象,如果value绑定的不是一个DataModel类型的值那么JSF会包装一个合适的DataModel,比如 ListDataModel
给value值。
通常这个model bean会保存在session scope中或者icefaces的extended-request scope(译注:相当于JSF2.0的view scope)中,如果你要显示的数据只有10到20行,那么没什么问题。但如果有1,000,000行数据呢?这样会带来很大的性能问题,尤其大部分情况下用户只是一次浏览10-20行数据。
不幸的是JSF规范没有提供一种按需加载数据的有效方式(也就是常说的“延迟加载”),我看过好些关于这个问题的文章,不过我觉的实现一种和持久层无关的解决方案会更好些。
我写了一个 LazyDataModel.java
,你可以继承它并实现下面三个方法来实现延迟加载:
public abstract int getRowsPerPage();
public abstract int countRows();
public abstract List<DTO> findRows(int startRow, int finishRow);
BTW,结合使用 ICEfaces ice:dataPaginator
组件可以为用户提供更好的体验。
分享到:
相关推荐
2. **实时(Live)组件**:ICEfaces 提供了实时组件,如Live Data Table,可以在数据变化时自动更新,无需用户手动刷新页面。 3. **事件处理**:ICEfaces 使用JSF事件模型,允许开发者自定义组件间的事件传递和处理...
ICEfaces 是一个开源的 JavaServer Faces (JSF) 框架,专为构建富互联网应用程序(Rich Internet Applications,RIAs)而设计。它提供了一套全面的组件库,允许开发人员创建高度交互性和响应式的Web应用。ICEfaces ...
ICEfaces 1.8是JavaServer Faces (JSF) 框架的一个杰出实现,专为构建下一代企业级Web应用程序而设计。它引入了Ajax Push技术,极大地提升了用户体验,允许实时的数据更新,使得Web应用更接近桌面应用的交互性。...
这个API主要关注的是IceFaces的自定义组件,这些组件极大地扩展了标准JSF组件的功能,为开发人员提供了一种高效且灵活的方式来构建动态和交互式的Web应用程序。 **1. IceFaces自定义组件** 在IceFaces中,自定义...
ICEFaces是一款用于构建富互联网应用程序(Rich Internet Applications, RIA)的框架,它为开发者提供了丰富的用户界面组件和自动 AJAX 支持,极大地简化了在Web应用中实现动态、交互式用户界面的过程。 首先,我们...
此外,ICEFaces 2.0 提供了一套完整的AJAX组件,这些组件可以无缝地与JSF集成,实现页面部分更新,从而提高应用的响应速度。 在开发工具方面,使用IntelliJ IDEA 9.0.3,这是一款强大的Java集成开发环境,为...
ICEFaces包含了一系列预定义的UI组件,如输入字段、按钮、表格等,这些组件支持Ajax无刷新更新。 在登录场景中,ICEFaces可以使登录表单的提交过程更加平滑。例如,当用户点击登录按钮时,ICEFaces可以通过Ajax调用...
ICEfaces 是一个开源的 JavaServer Faces (JSF) 框架,专为构建富互联网应用程序(Rich Internet Applications,RIAs)而设计。这个框架提供了一整套组件库,允许开发人员创建高度交互且响应迅速的 Web 应用程序,...
IceFaces 1.8与NetBeans 6.7 Beta的结合,为Java开发者提供了一个强大的工具集来创建富互联网应用程序。通过NetBeans IDE,开发者可以利用IceFaces的组件库和Ajax功能,同时享受到IDE提供的开发、调试和协作工具。而...
- **IceFaces** 是一种基于 JavaServer Faces (JSF) 的富客户端框架,它为开发者提供了丰富的 UI 组件库以及一系列增强功能,如AJAX支持、主题化等。 - 该框架由 ICEsoft Technologies 开发,用于构建高度交互式的 ...
`features`和`plugins`目录则包含ICEfaces 2插件的具体组件和功能实现。 7. **安装与配置**:ICEfaces 2的插件安装通常非常简单,只需通过Eclipse的“Install New Software”功能,指向`site.xml`文件的位置,按照...
ICEfaces 提供了一整套组件库,这些组件可以在服务器端更新,同时在客户端呈现,从而实现高效的异步通信。 标题中的“ICEfaces-1.8-Eclipse-3.5.0-plugins-v3.6.2 插件”指的是专为Eclipse IDE设计的ICEfaces插件...
JSF是一种用于构建Web应用程序的MVC框架,它为开发者提供了丰富的组件库和事件处理机制。ICEFaces是JSF的一个扩展,特别强调了AJAX支持,提供了更多动态和交互式的用户界面组件。 在JSF中,存在多个版本,如1.1、...
安装完ICEFaces Eclipse 插件后发现少了很多包,在建立icefaces工程的时候,往往需要到网上下载lib。所以本人在这里共享以下ICEFaces1.8的官方包。用意是省得大家在eclipse建立工程的时候专门去Icefaces官方网去下载...
ICEFaces 是一个强大的Java EE Web应用程序开发框架,专注于创建富互联网应用程序(Rich Internet Applications, RIA)。这个"autocomplete-tutorial.zip"压缩包提供了一个关于如何在ICEFaces框架中使用自动补全功能...
IceFaces的主要特点包括自动AJAX更新、实时验证、异步表格处理和全页面刷新的回退机制。这些特性大大提高了用户体验,同时减少了服务器端的负载。 将Hibernate与IceFaces结合使用,可以创建出数据驱动且具有动态...
- **技术实现**:通过分析ICEfaces的核心组件和技术栈,了解它是如何提供异步数据处理和事件驱动等高级特性的。 - **与JSF集成**:讲解ICEfaces如何无缝对接JSF,从而提升Web应用的表现力和响应速度。 #### 三、...
这种整合能够实现强大的功能,例如通过Spring的AOP进行事务管理,利用Hibernate简化数据库操作,以及通过IceFaces提供丰富的用户体验。在实际项目中,这样的架构能够提高开发效率,同时保证系统的可维护性和扩展性。
2. **组件丰富**:提供多种UI组件,如表格、图表、日历等,便于快速构建界面。 3. **自动回话管理**:处理客户端与服务器之间的会话状态,确保数据的一致性。 4. **兼容性**:支持JSF标准,与其他JSF框架和库可无缝...
IceFaces安装auctionMonitor示例