读书人

JSF2 Primeface2 LazyDataModel 应用

发布时间: 2012-08-07 14:54:47 作者: rapoo

JSF2 Primeface2 LazyDataModel 使用

第一步 新建Web项目,搭建好项目环境,将相关依赖的包加入到项目里,使用的服务器为JBoss7

?

第二步 页面代码

?

? ? ? ? ? ?<p:outputPanel id="updteTabelUser">

<p:dataTable var="user" value="#{userBean.lazyModel}" id="userTable"paginator="true" rows="10" lazy="true" paginatorPosition="bottom"paginatorTemplate=" {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {CurrentPageReport}"currentPageReportTemplate="{currentPage}/{totalPages}"emptyMessage="#{msgs.empty_data_msg}" selectionMode="single"><f:facet name="header">                                                         用户列表                </f:facet>            <p:column headerText="用户名"><h:outputText value="#{user.name}" /></p:column><p:column headerText="姓名"><h:outputText value="#{user.userName}" /></p:column><p:column headerText="手机"><h:outputText value="#{user.cellphoneNo}" /></p:column><p:column headerText="收购点"><h:outputText value="#{user.purchaseLocName}" /></p:column><p:column headerText="操作" styleupdate="carDetail"image="ui-icon ui-icon-zoomin" oncomplete="singleCarDialog.show()"title="查看"><f:setPropertyActionListener value="#{user}"target="#{userBean.currentUser}" /></p:commandButton><p:commandButton  ajax="false"image="ui-icon ui-icon-person" title="角色设置" rendered="#{loginBean.contains('03')}"action="#{userBean.roleSet}"><f:setPropertyActionListener value="#{user}"target="#{userBean.currentUser}" /></p:commandButton><p:commandButton image="ui-icon ui-icon-org" title="组织分配" rendered="#{loginBean.contains('04')}"action="#{userOrgBean.input}" ajax="false" ><f:setPropertyActionListener value="#{user}"target="#{userBean.currentUser}" /></p:commandButton></p:column></p:dataTable></p:outputPanel>

? ?p:dataTable 标签相关属性请参照Primeface文档,若没有文档可以发邮件给我

?

?

第三步 后台Bean代码

?

?

?

? ?@Named

@ConversationScopedpublic class UserBean{    /** 数据模型 */    private LazyDataModel<User> lazyModel;    @Inject    private EntityService entityService;    @PostConstruct    private void initLazyModel(){       String sql = "select u form User u' ;       lazyModel = this.entityService.findModel(sql.toString());    }    /**     * @return the lazyModel     */    public LazyDataModel<User> getLazyModel() {        return lazyModel;    }    /**     * @param lazyModel     *            the lazyModel to set     */    public void setLazyModel(LazyDataModel<User> lazyModel) {        this.lazyModel = lazyModel;    }}
?

? 主要逻辑代码EntityService对LaydataModel的封装具体实现

??public <T> LazyDataModel<T> findModel(final String jpql, final Object... values) {?

        LazyDataModel<T> lazyModel = new LazyDataModel<T>() {            @Override            public List<T> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> mapFilters) {                // 得到总记录数                Integer count = Long.valueOf(countHqlResult(jpql, values)).intValue();                this.setRowCount(count);                //  得到查询结果                Query q = createQuery(jpql, values);                setPageParameterToQuery(q, first, pageSize);                List result = q.getResultList();                                return result;            }        };                lazyModel.setRowCount(1);        return lazyModel;    }
countHqlResult方法主要用户查询结果,可以根据自己需要进行封装,使用LazyDataModel分页最主要的就是
实现其load方法
?

?

读书人网 >JavaScript

热点推荐