`
jxh118
  • 浏览: 125217 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在JSF中实现分页

    博客分类:
  • JSF
阅读更多
****** home.xhtml ******
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" template="layout/template.xhtml"><ui:define name="body">   <h:messages globalOnly="true" styleClass="message" />
   <h:form>
    <rich:panel>
     <f:facet name="header">推荐资源列表</f:facet>
     <h:dataTable id="ct" var="url" value="#{pageDataModel}" preserveDataModel="true" rowClasses="tr1,tr2" columnClasses="td1,td2,td3,td4,td5" headerClass="th1" footerClass="ft1" styleClass="tb1" rows="5">
      <h:column>
       <f:facet name="header">
        <h:outputText value="资源URL" />
       </f:facet>
       <a href="#{url.content}" target="_blank">#{url.content}</a>
      </h:column>
      <h:column>
       <f:facet name="header">
        <h:outputText value="资源描述" />
       </f:facet>
       <h:outputText value="#{url.info}" />
      </h:column>
      <h:column>
       <f:facet name="header">
        <h:outputText value="推荐人" />
       </f:facet>
       <h:outputText value="#{url.auth}" />
      </h:column>
      <h:column>
       <f:facet name="header">
        <h:outputText value="更新时间" />
       </f:facet>
       <h:outputText value="#{url.updateDate}">
        <f:convertDateTime type="both" dateStyle="medium" timeStyle="short" />
       </h:outputText>
      </h:column>
      <h:column>
       <h:commandLink action="#{urlLogicAction.delete}">
        <h:outputText value="删除" />
        <f:param name="url.id" value="#{url.id}" />
       </h:commandLink>
      </h:column>
      <f:facet name="footer">
       <rich:datascroller for="ct" align="right" rowsCountVar="rowsCount" displayedRowsCountVar="displayedRowsCountVar"
        firstRowIndexVar="firstRowIndex" lastRowIndexVar="lastRowIndex" pageCountVar="pageCount" pageIndexVar="pageIndex">
        <h:outputFormat value="#{example_messages['dataScroller_pages']}" styleClass="standard">
         <f:param value="#{rowsCount}" />
         <f:param value="#{displayedRowsCountVar}" />
         <f:param value="#{firstRowIndex}" />
         <f:param value="#{lastRowIndex}" />
         <f:param value="#{pageIndex}" />
         <f:param value="#{pageCount}" />
        </h:outputFormat>
       </rich:datascroller>
      </f:facet>
     </h:dataTable>
    </rich:panel>
   </h:form>
</ui:define>
</ui:composition>
 import java.util.List public class DataPage { private int datasetSize;private int startRow;private List data;/** * Create an object representing a sublist of a dataset. * @param datasetSize * is the total number of matching rows available. * @param startRow is the index within the complete dataset of the first element in the data list. * @param data is a list of consecutive objects from the dataset. */ public DataPage(int datasetSize, int startRow, List data) { this.datasetSize = datasetSize; this.startRow = startRow; this.data = data; }/** * Return the number of items in the full dataset. */ public int getDatasetSize() { return datasetSize; }/** * Return the offset within the full dataset of the first element in the * list held by this object. */ public int getStartRow() { return startRow; }/** * Return the list of objects held by this object, which is a continuous * subset of the full dataset. */ public List getData() { return data; } }

 

import java.util.Date;import javax.ejb.Stateless;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.log.Log;
import org.jboss.seam.security.Identity;import com.c2one.util.DataPage;
import com.c2one.util.PagedListDataModel;@Stateless
@Name("urlLogicAction")
public class UrlLogicAction implements UrlLogic {@In(required = false)
private UrlResource urlResource;@Logger
Log log;@PersistenceContext
private EntityManager em;@In
Identity identity;@Out(required = false, scope = ScopeType.SESSION)
private PagedListDataModel pageDataModel;public String save() {
   urlResource.setUpdateDate(new Date());
   urlResource.setAuth(identity.getUsername());
   em.persist(urlResource);   if (pageDataModel != null) {
    pageDataModel.reflash();
   }   return "home";
}public String delete() {
   FacesContext ctx = FacesContext.getCurrentInstance();
   String urlId = (String) ctx.getExternalContext()
     .getRequestParameterMap().get("url.id");
   UrlResource rur = em.find(UrlResource.class, Long.parseLong(urlId));
   if (rur != null)
    em.remove(rur);   if (pageDataModel != null) {
    pageDataModel.reflash();
   }   return null;
}public int getTotalCount() {
   Query q = em.createQuery("select count(*) from UrlResource urls");
   Object result = q.getSingleResult();
   return Integer.parseInt(result.toString());
}public DataPage getDataPage(int startRow, int pageSize) {
   Query q = em
     .createQuery("from UrlResource urls order by urls.updateDate desc");
   q.setFirstResult(startRow);
   q.setMaxResults(pageSize);
   DataPage dataPage = new DataPage(getTotalCount(), startRow, q
     .getResultList());
   return dataPage;
}@Factory("pageDataModel")
public void getDataModel() {
   if (pageDataModel == null) {
    pageDataModel = new PagedListDataModel(20) {
     public DataPage fetchPage(int startRow, int pageSize) {
      return getDataPage(startRow, pageSize);
     }
    };
   }
}
}

 

  • 大小: 27.1 KB
分享到:
评论

相关推荐

    jsf 分页

    总之,在JSF中实现分页,我们可以选择利用第三方库如PrimeFaces提供的组件,或者自己编写逻辑处理分页。这两种方法都有其优缺点,具体选择取决于项目需求和个人喜好。无论哪种方式,关键在于理解分页的基本原理,...

    jsf分页 jsf分页 jsf分页

    虽然可以手动实现分页,但使用成熟的JSF组件库(如PrimeFaces、RichFaces等)可以使工作变得更加简单。以PrimeFaces为例,`p:dataTable`组件自带了分页功能,只需配置`rows`属性(每页记录数)和`paginator`属性...

    jsf 分页实例jsf 分页实例

    本实例将详细讲解如何在JSF中实现分页。 ### 1. 分页组件选择 在JSF中,可以使用开源库如PrimeFaces、RichFaces或ICEfaces等提供的分页组件。这里以PrimeFaces为例,因为它拥有广泛的应用和丰富的组件库。...

    JSF分页实现,内含建表语句

    在这个项目中,MySQL被用作存储数据的后端,配合JSF实现数据的读取和分页显示。 综上所述,这个JSF分页实现项目涵盖了Web开发中的多个重要方面,包括前端界面的组件化设计、后端数据的分页处理、数据库操作以及Java...

    jsf自带分页

    在JSF中,处理大量数据时,分页功能是必不可少的,它可以提高用户体验,减少一次性加载过多数据对服务器和网络资源的压力。本文将深入探讨JSF自带的分页功能,并结合提供的博客链接进行讲解。 在JSF中,分页通常...

    struts和jsf分页

    在JSF中实现分页,可以使用内置的UI组件或者第三方库: 1. **UI组件**:JSF提供了一些内置的UI组件,如`p:paginator`(PrimeFaces扩展库)和`h:commandLink`,可以通过这些组件轻松创建分页界面。 2. **Managed ...

    JSF经典的js分页

    "JSF经典的js分页"是一个示例,展示了如何在JSF应用中实现纯JavaScript(js)的分页功能。这个例子,即PageDemo,旨在提供一个代码简洁、易于理解的分页解决方案。 首先,我们需要了解JSF的基本概念。JSF是一个用于...

    JSF 分页方案

    在JavaServer Faces (JSF)框架中,分页是一种常见的需求,特别是在处理大量数据时,以提高用户体验并优化性能。...通过这些步骤,开发者能够在JSF应用中高效地实现分页功能,提供高性能的数据浏览体验。

    利用自定义渲染器实现JSF数据库表分页显示

    通过使用自定义渲染器实现分页功能,可以极大地提高JSF应用程序的性能和用户体验。这种方法不仅易于集成,而且可以根据具体需求进行高度定制。掌握了这一技术,就可以轻松应对各种复杂的分页需求,为JSF开发带来更多...

    JSF中自定义分页呈现器(Render)的实现和应用

    为了解决这些问题,本文提出了一种结合JSF自定义呈现器组件技术实现分页查询的方法。 #### 自定义分页呈现器的设计原理 自定义分页呈现器的核心思想在于实现JSF中的自定义渲染器(Renderer),该渲染器负责绘制...

    JSF学习代码3

    在JSF中实现分页,通常涉及到自定义标签库(Taglib),例如`pager-taglib-2.0.war`可能就是这样一个自定义标签库,它提供了一组用于创建分页UI的自定义组件。通过这些组件,开发者可以轻松地在页面间导航,并控制...

    JSF数据分页的简单实现

    JSF分页有不少的组件可以使用,但用起来都不是想象的那么简单,这里自己实现了一个简单的分页实现,以提供大家分享。 有更好的意见请留言。或者去...

    JSF分页控件 ,支持大容量可查询分页

    在JSF中,分页通常通过自定义组件或利用现有的第三方库如PrimeFaces、RichFaces等实现。 "JSF分页控件" 可能是基于某个特定的JSF库,比如PrimeFaces中的`p:datascroller`或`p:paginator`,或者自定义的组件。这些...

    JSF分页组件2

    在JSF中,我们可以使用各种分页组件来实现这一功能。本文将深入探讨JSF分页组件2的相关知识点,包括其原理、使用方法和最佳实践。 ### 1. 分页组件的基本概念 分页组件允许用户以有限的数量逐页查看数据,而不是一...

    JSF分页组件

    在JSF中,我们可以通过自定义组件或者使用现有的库如PrimeFaces或RichFaces来实现这些功能。 **2. 自定义JSF分页组件** 创建自定义分页组件涉及以下几个步骤: - **设计组件**: 首先,你需要设计一个UI组件,包含...

    JSF数据分页的简单例子(源码)

    2. **实现分页逻辑**:在Managed Bean中,我们需要编写方法来计算总页数,以及根据当前页码获取相应的数据子集。这通常涉及到对数据集合的切片操作。 3. **配置Data Table**:在JSF页面(通常是`.xhtml`文件)上,...

    jsf 动态分页 带jar包 解压直接导入eclipse即可,方便学习~

    4. **后台处理**:在Bean中实现分页逻辑,包括计算总页数、根据页码获取数据等。 5. **数据绑定**:将获取的数据集合绑定到UI组件,如`&lt;p:dataTable value="#{bean.dataList}" var="item"&gt;`。 **4. 示例代码** ```...

    jsf分页——详细源码 测试通过

    在JavaScript Server Faces (JSF) 中...总的来说,这个源码示例对于学习和理解如何在JSF项目中实现分页功能非常有帮助。开发者可以通过阅读和理解代码,掌握如何将分页集成到自己的应用中,提升项目的效率和用户体验。

    jsf增删改查分页例子

    JSF提供了诸如`p:paginator`(PrimeFaces库中的分页组件)这样的工具,配合数据源(如JPA的`List`或`Set`)实现分页效果。分页组件通常有上一页、下一页、跳转到指定页等功能。 6. **Entity类和DAO(Data Access ...

Global site tag (gtag.js) - Google Analytics