public static AbstractUIPage findPage(final FacesContext context, final UIComponent component) {
final UIViewRoot view = context.getViewRoot();
if (view != null) {
TransientStateHolder stateHolder = (TransientStateHolder) view.getAttributes().get(PAGE_KEY);
if (stateHolder == null || stateHolder.isEmpty()) {
final AbstractUIPage page = findPage(component);
stateHolder = new TransientStateHolder(page);
context.getViewRoot().getAttributes().put(PAGE_KEY, stateHolder);
}
return (AbstractUIPage) stateHolder.get();
} else {