我正在使用JSF版1.2_09-b02-FCS
让我成为其他课程的内部课程TableList
:
private class TableList extends AbstractList<T> {
private List<T> list;
private int size;
public T get(int i) {
if (needToUpdateList || currPage != i / pageSize) {
currPage = i / pageSize;
list = getDataList(currPage * pageSize, pageSize);
needToUpdateList = false;
}
return list.get(i % pageSize);
}
public int size() {
if (needToUpdateSize) {
size = getDataSize();
needToUpdateSize = false;
}
return size;
}
}
其get方法将在JSF生命周期阶段调用。问题是我不想调用渲染响应阶段list = getDataList(currPage * pageSize, pageSize);
。有可能吗?
答案 0 :(得分:3)
检查FacesContext#getRenderResponse()
是否返回true。
if (FacesContext.getCurrentInstance().getRenderResponse()) {
// We're currently in the render response phase.
}
如果您使用的是JSF 2.0,则不应使用该方法,而应使用FacesContext#getCurrentPhaseId()
,因为getRenderResponse()
在初始GET请求的呈现响应期间错误地返回false
。