Cat*_*ish 5 java jsf richfaces jsf-1.2
我正试图弄清楚如何使用richfaces datascroller进行真正的分页.
目前我的查询从表中提取所有数据,我想要它,所以当你单击datascroller的下一个按钮时,它将查询db接下来的20行.
我理解如何编写查询以限制行,但我不知道如何获取datascroller的下一个按钮来调用特定方法.
我看到有很多人在Richfaces论坛上发布了潜在的解决方案,但他们都使用了dataModel.由于我没有使用ORM,我不确定如何将这些解决方案应用到我拥有的东西中.
任何帮助表示赞赏.
<rich:extendedDataTable id="resultsTable" value="#{tableBacking.results}" var="results" sortMode="single" rowKeyVar="row">
<rich:columns value="#{tableBacking.columns == null ? '' : tableBacking.columns}" var="columns" index="ind" id="column#{ind}" sortBy="#{results[ind].data}" rendered="#{tableBacking.columns != null}">
<f:facet name="header">
<h:outputText value="#{columns.columnDescription}" />
</f:facet>
<h:outputText value="#{results[ind].data}" />
</rich:columns>
</rich:extendedDataTable>
<rich:datascroller for="resultsTable" page="#{tableBacking.page}" renderIfSinglePage="false" />
Run Code Online (Sandbox Code Playgroud)
支持豆
public class TableBacking {
private List<List<TableData>> results = null;
private int page = 0;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public List<List<TableData>> getResults() throws Exception {
return results;
}
public void setResults(List<List<TableData>> results) {
this.results = results;
}
private void getData(String whereClause) {
try {
DataDao dd = new DataDao();
results = dd.getData(); // dd.getData just runs a query on a table and puts the results in a List of lists.
} catch (Exception e) {}
}
Run Code Online (Sandbox Code Playgroud)
您需要将您的rich:extendedDataTable
属性绑定到支持 bean 中的属性。
爪哇
private HtmlExtendedDataTable Table;
//Getter and setter
Run Code Online (Sandbox Code Playgroud)
之后你绑定你的视图
html
<rich:extendedDataTable id="resultsTable" value="#{tableBacking.results}" var="results" sortMode="single" rowKeyVar="row" binding="#{tableBacking.Table}">
RichfacesHtmlExtendedDataTable
有一个方法可以检查每页显示的行数,称为getRows()
。当bean初始化时,只需加载第一个页面值(您可以仅加载其余页面上元素的id,稍后当您要访问页面时根据id加载它们)。
<rich:datascroller/>
还有一个在单击页面按钮时触发的事件,您可以通过以下方式从支持 bean 获取该事件:
html
<f:facet name="footer">
<rich:datascroller id="ds"
scrollerListener="#{tableBacking.actionOnPageChange}" />
</f:facet>
Run Code Online (Sandbox Code Playgroud)
爪哇
public String actionOnPageChange(DataScrollerEvent event)
这DataScrollerEvent
包括用户单击的页面,您可以使用这些页面getNewScrolVal()
。发生这种情况时,只需加载表中相应页面的值即可。