私は自分のアプリケーションで使用JSF 1.2
しています。私のアプリケーションページのほとんどはh:datatable
. データテーブルに関するすべてを説明するこの素晴らしい記事に出くわしました。HtmlDataTable
上記の記事で示したように、テーブルをセッション スコープの Beanにバインドして使用することで、データ テーブルのページネーションを実装しました。
今、私はJSF 2.0
バージョンに移行しています。ほとんどのアプリケーション ページが互いに独立しているため、 sessionscoped
Bean をに変換したいと考えていました。viewscoped
豆について説明しているこの記事に出くわしました。データテーブルの属性をViewscoped
使用できないことを示しています。binding
また、 を使用しDatamodel
ます。
Datamodel
and viewscoped
Beanを使用してデータ化可能なページネーションを実装する方法に今、私は感銘を受けました。
私はページネーションのために次の方法を持っています
public String pageFirst() {
dataTable.setFirst(0);
return "";
}
public String pagePrevious() {
dataTable.setFirst(dataTable.getFirst() - dataTable.getRows());
return "";
}
public String pageNext() {
dataTable.setFirst(dataTable.getFirst() + dataTable.getRows());
return "";
}
public String pageLast() {
try {
int count = dataTable.getRowCount();
int rows = dataTable.getRows();
LOGGER.info("rowcount:" + count);
LOGGER.info("rows:" + rows);
dataTable.setFirst(count - ((count % rows != 0) ? count % rows : rows));
}catch(ArithmeticException e){
LOGGER.info("no rows to display: ",e);
}
return "";
}
そして、ビューでは、私はそれらをこのように使用しています
<h:commandButton value="#{msgs.footerbutton1}"
action="#{bean.pageFirst}"
disabled="#{bean.dataTable.first == 0}" />
<h:commandButton value="#{msgs.footerbutton2}"
action="#{bean.pagePrevious}"
disabled="#{bean.dataTable.first == 0}" />
<h:commandButton value="#{msgs.footerbutton3}"
action="#{bean.pageNext}"
disabled="#{bean.dataTable.first + bean.dataTable.rows
>= bean.dataTable.rowCount}" />
<h:commandButton value="#{msgs.footerbutton4}"
action="#{bean.pageLast}"
disabled="#{bean.dataTable.first + bean.dataTable.rows
>= bean.dataTable.rowCount}" />
助けてください。