可标记的PrimeFaces数据表分页器

时间:2015-08-17 10:06:59

标签: jsf primefaces datatable pagination bookmarks

有没有办法从PrimeFaces为<p:dataTable>实现可收藏的分页器?例如,当我按{1}} <p:dataTable>时,按下分页按钮到第二页,网址变为http://example.com/list.xhtml?first=10&max=10

1 个答案:

答案 0 :(得分:0)

基本上你必须自己创造它,据我所知。因此,如果您希望使用与primefaces示例中相同的分页模板,则必须重新创建css。

要创建自定义的,它非常简单: 数据表的第一个分页器设置为false,因为你要制作一个自定义的。 然后在dataTable上添加两个链接:

这是来自new.xhtml:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

使用getter和setter将页面存储在Managed Bean中。 然后只需查询页面:

<div class="nextPrevBlock">
    <h:panelGroup rendered="#{page>0}" style="margin-right:1em;">
        <h:link outcome="new.xhtml">
            <f:param name="page" value="#{page - 1}"/>
            <div class="btnLink">
                <h:outputText value="#{strings.previous}"></h:outputText>
            </div>
        </h:link>
    </h:panelGroup>
    <h:panelGroup>
        <h:link outcome="new.xhtml">
            <f:param name="page" value="#{page + 1}"/>
            <div class="btnLink">
                <h:outputText value="#{strings.next}"/>
            </div>
        </h:link>
    </h:panelGroup>
</div>

然后在您的服务中:

//it's requestScoped
@EJB
private ElemService elementService;
private List<Element> elementList;
@PostConstruct
public void init() {
    FacesContext fc = FacesContext.getCurrentInstance();
    Map<String, String> paramsMap = fc.getExternalContext()
            .getRequestParameterMap();
    try {
        page = Integer.parseInt(paramsMap.get("page"));
        if (page < 0)
            page = 0;
    } catch (Exception e) {
      page = 0;
    }
    getElementsOfPage(page);
}
public void getElementsOfPage(int page) {
    elementList = elementService.getElemByPage(page);
}

@Override public List<Element> giveElementList(int page) { Query query = em.createQuery(SELECT_NEWEST_THREADS); query.setFirstResult(page * NUMBER_OF_ELEMENTS_PER_PAGE); query.setMaxResults(NUMBER_OF_ELEMENTS_PER_PAGE); return query.getResultList(); } 是第一个结果,因此您必须将页面的值按页面乘以elem。 setFirstResult()只是您想要的页面元素。

您必须自定义它,以满足您的需求。 我希望这有帮助。

相关问题