如何确定代码中的当前JSF生命周期阶段

时间:2014-08-25 07:40:22

标签: jsf lifecycle

我正在使用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);。有可能吗?

1 个答案:

答案 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