简单易用的JSF翻页组件

 

新的QFaces组件scroller, 这是一个翻页组件,直接绑定到dataTable中即可,使用非常简单,组件会包含在1.5中发布,最近会进行一些测试,组件的性能很好,比网上大部分人所用到的LocalDataModel方式要好,从性能上和易用性上。
从性能上,组件不会在生命周期中出现两次调用数据的多余操作,并且刷新之后仍可停留在原来所在的页面。
从易用性上,只要实现一个非常简单的方法绑定就可以,这已经近乎傻瓜式的了。
现在可以在这里看到一些效果,html,及java代码都有

http://huliqing-qfaces.appspot.com/qfaces-example/ui-scroller.faces?qRecordStart=90

预览一下用法吧,
html代码
<h:form>
            
<q:scroller for="myDataTable" 
                bind
="#{scrollerBean.loadData}"
                displayCount
="true"
                displayJump
="true"
                displayPage
="10">
                
<h:dataTable id="myDataTable"  border="1" 
                    binding
="#{scrollerBean.myData}" 
                    value
="#{scrollerBean.people}" var="pl" width="500">
                    
<h:column>
                        
<h:outputText value="#{pl.name}" />
                    
</h:column>
                    
                    
<h:column>
                        
<h:outputText value="#{pl.age}" />
                    
</h:column>
                    
                    
<h:column>
                        
<h:outputText value="#{pl.birthday}" >
                            
<f:convertDateTime pattern="yyyy-MM-dd"/>
                        
</h:outputText>
                    
</h:column>
                    
                    
<h:column>
                        
<h:commandButton value="Test" actionListener="#{scrollerBean.testListener}" />
                    
</h:column>
                
</h:dataTable>
            
</q:scroller>
        
</h:form>

看到组件所绑定的方法了吗:bind="#{scrollerBean.loadData}" ,后台代码只要实现一个这样的方法进行绑定就可以.

后台java代码

public PageModel loadData(long start) {
        
// 设置自己的pageSize
        int pageSize = 10;
        
// 模拟,从DB中获取总记录数
        long total = getTotalCount();
        
// 模拟从DB中获取一些数据,从start起pageSize条记录
        ArrayList<Person> pageData = getFromDatabase(start, pageSize);
        
// 把这几个信息封装成PageModel返回,OK
        PageModel pm = new PageModel();
        pm.setPageData(pageData);
        pm.setPageSize(pageSize);
        pm.setTotal(total);
        
return pm;
    }

你可能不明白start这个参数是怎么来的,这是scroller组件计算出来后给你的,当第一次加载页面时它会是0,它代表着现在需要从数据库中的第几条数据读取记录,你只要根据start,再配合你自己设置的pageSize从数据库获取一页数据返回给scroller组件就可以。返回类型是PageModel,这是QFaces组件包中的类.只是非常简单的要求三个数据而已,一个当前页的数据,一个总记录数,一个pageSize.
组件根据这三个数据可计算,并且渲染一个scroller翻页导航。这还不是整个组件的完整面貌,它会变得更好的。
我很喜欢这个项目:)
最近又对QFaces作了大幅调整,调整了URL获取资源的方式,QFaces.js拆分成了两个文件QFaces-gen,QFaces-faces,命名空间也作了一些调整。
tree组件修正了一些bug,并提高了友好性。inputHelp修正了在谷歌浏览器下的错位问题,同时修正了上下左右键不能使用的问题。联动组件现在的工作方式仍然显得太积极,需要作一些调整。还有很多可以继续改进的。喜欢JSF的朋友,有问题可以一起互相交流学习。

话外,昨天把自己的JTM放到U盘下运行,感觉非常棒,现在带着U盘或者手机就可以随处移动自己的WEB演示系统了:), 不少朋友向我索要源码,有些不好意思,这个小东西是免费的,你可以随便用,没有版权约束,但不是开源的。源码我是拿来出售的。


- huliqing@huliqing.name
- http://www.huliqing.name

posted on 2009-05-09 09:55 huliqing 阅读(1649) 评论(4)  编辑  收藏 所属分类: JSF

评论

# re: 简单易用的JSF翻页组件 2009-05-09 12:27 阳衡锋

看着有点像flex,不知道是谁像谁。JSF的编程模型确实不错,他是asp.net和jsp的一个折中。我认为。  回复  更多评论   

# re: 简单易用的JSF翻页组件 2009-05-09 13:50 huliqing

@阳衡锋
JSF很灵活,你想要把它做得像什么就像什么。
它可以把很多东西封装起来。  回复  更多评论   

# re: 简单易用的JSF翻页组件 2009-08-23 09:19 王兵

lz 研究的两个东西 jsf swing 我都没有碰过

最近想看看RCP开发 公司准备为自己的一个开发平台 做一个eclipse插件

感觉以后插件会是一种趋势   回复  更多评论   

# re: 简单易用的JSF翻页组件 2009-08-24 11:44 huliqing

@王兵
嗯,我确实对这两个东西很感兴趣。找一些自己感兴趣的东西研究,有目标有努力就会使自己比较充实了。呵呵!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

文章原创,欢迎转载
——转载请注明出处及原文链接

随笔分类(60)

随笔档案(33)

最新评论

评论排行榜