seam分页总结

一:抽象类:

/**
 * 
 */
package cn.cjp.utility;
import javax.persistence.EntityManager;
import javax.faces.model.SelectItem;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.Component;
/**
 * @author rmc
 *
 */
public abstract class PageABT{
	EntityManager em = (EntityManager) Component.getInstance("entityManager");
	 //分页开始
    protected int lines = 10;
    protected int pages = 0;
    long entrys =  Contexts.getPageContext().get("entrys")==null?0:Contexts.getPageContext().get("entrys");
    protected List<SelectItem> pageselectitem = Contexts.getPageContext().get("pageselectitem");
    /**
     * 重置分页
     */
    protected void resetpage(){
    	 Contexts.getPageContext().remove("entrys");
         entrys=-1;
         Contexts.getPageContext().remove("pageselectitem");
         pageselectitem=null;
         setPage(0);
    }
    /**
     * 保存查询合计
     * @param query 例子:" from Send s where s.status=-1 "
     */
    protected saveentrys(String query){
        Integer result=Contexts.getPageContext().get("entrys");
        if(result==null||entrys==-1){
            entrys=em.createQuery("select count(s)"+query).getSingleResult();
            Contexts.getPageContext().set("entrys",entrys);
        }
    }
    public List<SelectItem> Pages() {
        if(pageselectitem!=null)
        {
            return pageselectitem;
        }else{
            pageselectitem=new LinkedList<SelectItem>();
            pages = (int) (entrys / lines + 1);
            for ( i in 0..< pages) {
                pageselectitem.add(new SelectItem(i, "第" +(1+ i) + "页"));
            }
            Contexts.getPageContext().set("pageselectitem",pageselectitem);
            return pageselectitem;
        }
    }
    protected Integer page=Contexts.getPageContext().get("page")==null?0:(Integer)Contexts.getPageContext().get("page");
    public Integer getPage(){
        return page;
    }
    public void setPage(Integer page){//for selectitem
        this.page=page;
        Contexts.getPageContext().set("page", page);
    }
    public void setpage(int opr){//for button > and < set page
        page=getPage();
        List<SelectItem> result = Contexts.getPageContext().get("pageselectitem");
        int maxpage = result.size() - 1;
        if (opr != 0) {
            page = ((page + opr) >= 0) ? (page + opr)  : page;
            page = (page > maxpage) ? maxpage : page;
            setPage(page);
        }
    }
    //分页结束
	
}

 二:使用

@Name("sendmng")
public Test extends PageABT{
public void rest(){
resetpage();
}
@DataModel("sendlist")
private List<Send> sendlist;
@DataModelSelection("sendlist")
private Send s;
@Factory("sendlist")
public void listinit(){
query=" from Send s where s.status=1 "
saveentrys(query);
list=em.createQuery("select s"+query+"order by s.id desc").setFirstResult(page*lines).setMaxResults(lines).getResultList();        
}
}

 xhtml:

<h:form>
					<h:panelGrid columns="4" id="som">
						<a:commandButton value="<" action="#{sendmng.setpage(-1)}"
							reRender="som,sendlist" />
						<h:selectOneMenu value="#{sendmng.page}">
							<f:selectItems value="#{sendmng.Pages()}" />
							<a:support event="onchange" action="#{sendmng.setpage(0)}"
								reRender="som,sendlist" />
						</h:selectOneMenu>
						<a:commandButton value=">" action="#{sendmng.setpage(1)}"
							reRender="som,sendlist" />
						<h:outputText style="color:blue" value="共计#{sendmng.entrys}个" />
					</h:panelGrid>
				</h:form>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值