Как узнать, нахожусь ли я в обратной передаче?
Зависит от версии JSF.
В JSF 1.0 / 1.1 нет метода ResponseStateManager#isPostback()
. проверьте, присутствует ли javax.faces.ViewState
параметр в карте параметров запроса, как доступно ExternalContext#getRequestParameterMap()
.
public static boolean isPostback() {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
return externalContext.getRequestParameterMap().contains("javax.faces.ViewState");
}
В JSF 1.2 действительно используйте ResponseStateManager#isPostback()
, который, в свою очередь, фактически проверяет наличие параметра javax.faces.ViewState
в карте параметров запроса.
public static boolean isPostback() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getRenderKit().getResponseStateManager().isPostback(context);
}
В JSF 2.0 вместо этого используйте FacesContext#isPostback()
, который под крышками фактически делегирует ResponseStateManager#isPostback()
.
public static boolean isPostback() {
return FacesContext.getCurrentInstance().isPostback();
}