我希望有一个简单的分页机制,所以当我致电/allhotels?page=2
时,我想回到/allhotels?page=1
或者回到/allhotels?page=3
。我有2个简单的按钮:
<h:form>
<h:commandButton value="previous" action="#{hotelSearchResult.toPreviousPage}" />
<h:commandButton value="next" action="#{hotelSearchResult.toNextPage}" />
</h:form>
应该重定向到数据集的下一页/上一页:
public int getPreviousPage() {
return page > 0 ? page - 1 : 0;
}
public void toPreviousPage() {
int previous = getPreviousPage();
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
String url = context.getRequestContextPath() + "/allhotels?page=" + previous;
try {
context.redirect(url);
} catch (IOException e) {
e.printStackTrace();
}
}
public int getNextPage() {
return hotels != null && hotels.size() == 100 ? page + 1 : page;
}
public void toNextPage() {
int next = getNextPage();
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
String url = context.getRequestContextPath() + "/allhotels?page=" + next;
try {
context.redirect(url);
} catch (IOException e) {
e.printStackTrace();
}
}
但它只调用/pages/allhotels.xhtml
?
我尝试了很多东西,但从未奏效过:
<f:viewParam name="page" value="#{hotelSearchResult.page}" />
<h:commandButton value="vor" action="#{hotelSearchResult.toNextPage}">
<f:param name="page" value="#{hotelSearchResult.nextPage}" />
</h:commandButton>
在faces-config.xml:
<navigation-rule>
<from-view-id>/allhotels</from-view-id>
<navigation-case>
<from-outcome>*</from-outcome>
<to-view-id>*</to-view-id>
<redirect>
<redirect-param>
<name>page</name>
<value>*</value>
</redirect-param>
</redirect>
</navigation-case>
</navigation-rule>
2个方法To ... Page()甚至都没有被调用...有人可以告诉我如何才能获得最简单的分页机制吗?我已经失去了2个小时......
答案 0 :(得分:0)
这里有很多关于发送参数和重定向的重复内容。我不明白为什么你通过检查你是否可以在你的bean中返回或转发来使事情复杂化。这意味着在第1页上您有一个返回链接,可以将您重定向到第1页?我会简单地使用disabled
上的h:link
属性。所以:
<h:link value="previous" disabled="#{hotelSearchResult.page le 1}">
<f:param name="page" value="#{hotelSearchResult.page - 1}" />
</h:link>
<h:link value="next" disabled="#{hotelSearchResult.page ge 100}">
<f:param name="page" value="#{hotelSearchResult.page + 1}" />
</h:link>
关于处理参数,请参阅: