Fix issue with JSF 2.0 compatibility

Issue: SWF-1684
This commit is contained in:
Rossen Stoyanchev
2016-06-17 06:41:54 -04:00
parent 1f3fec8cde
commit 1ae4db6240

View File

@@ -188,28 +188,28 @@ public class JsfViewFactory implements ViewFactory {
}
private void publishPostRestoreStateEvent(FacesContext facesContext) {
EnumSet<VisitHint> visitHints = null;
VisitHint visitHint = null;
try {
visitHints = EnumSet.of(VisitHint.SKIP_ITERATION);
visitHint = Enum.valueOf(VisitHint.class, "SKIP_ITERATION");
}
catch (IllegalArgumentException ex) {
// JSF < 2.1
}
String attributeName = "javax.faces.visit.SKIP_ITERATION";
facesContext.getAttributes().put(attributeName, true);
String name = "javax.faces.visit.SKIP_ITERATION";
facesContext.getAttributes().put(name, true);
try {
VisitContext visitContext = (visitHints != null ?
VisitContext.createVisitContext(facesContext, null, visitHints) :
VisitContext visitContext = (visitHint != null ?
VisitContext.createVisitContext(facesContext, null, EnumSet.of(visitHint)) :
VisitContext.createVisitContext(facesContext));
facesContext.getViewRoot().visitTree(visitContext, new PostRestoreStateEventVisitCallback());
}
catch (AbortProcessingException e) {
PhaseId phaseId = facesContext.getCurrentPhaseId();
ExceptionQueuedEventContext eventContext = new ExceptionQueuedEventContext(facesContext, e, null, phaseId);
Object eventContext = new ExceptionQueuedEventContext(facesContext, e, null, phaseId);
facesContext.getApplication().publishEvent(facesContext, ExceptionQueuedEvent.class, eventContext);
}
finally {
facesContext.getAttributes().remove(attributeName);
facesContext.getAttributes().remove(name);
}
}