有没有办法从PrimeFaces为<p:dataTable>
实现可收藏的分页器?例如,当我按{1}} <p:dataTable>
时,按下分页按钮到第二页,网址变为http://example.com/list.xhtml?first=10&max=10。
答案 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()
只是您想要的页面元素。
您必须自定义它,以满足您的需求。 我希望这有帮助。