我正在使用JSF1.2开发分页逻辑,并且在此过程中我有4个链接,分别对应于结果的第一页,上一页,下一页和最后一页。我在“搜索”页面中输入搜索条件,然后单击“提交”以获取一些记录。我有一个与每条记录对应的视图链接,以查看完整的详细信息。所以我有两个Managed bean,一个用于Search / pagination功能,另一个用于View完整记录详细信息。
那么问题是什么?
当我搜索记录时,分页完全正常。但是,当我查看记录的详细信息并返回搜索页面时,我发现每次单击下一个按钮时,next()方法都会被调用两次。
有没有解决方案?
The code is as follows:-
Inside search:-
<h:commandLink value="#{msg['heading.nextLink']}"
binding="#{searchRoutesForView.nextLink}"
actionListener="#{searchRoutesForView.next}">
</h:commandLink>
Inside SearchManagedbean:-
public void next(ActionEvent actionEvent) {
if ((pointer + noOfRecordsToBeDisplayed) >= readConfig.length) {
readRoutingResponse.setReadConfig(Arrays.copyOfRange(readConfig,
pointer, readConfig.length));
pointer = readConfig.length;
System.out.println("pointer inside next =" + pointer);
setOrDisableLinks(false, false, true, true);
} else {
readRoutingResponse.setReadConfig(Arrays.copyOfRange(readConfig,
pointer, pointer + noOfRecordsToBeDisplayed));
pointer += noOfRecordsToBeDisplayed;
System.out.println("pointer inside next -- else =" + pointer);
setOrDisableLinks(false, false, false, false);
}
}
答案 0 :(得分:0)
以下方法可能不是最好的方法..
public void next(ActionEvent actionEvent)
{
if((pointer + noOfRecordsToBeDisplayed) >= readConfig.length) && (isVisitedOnce == false))
{
visitedOnce = true //set one boolean indicating this method is already visited
}
}
如果bean在Request范围内,这将不起作用。