@Override public void handleNavigation(FacesContext context, String fromAction, String outcome) { Map<Object, Object> attrs = context.getAttributes(); String dialogOutcome = (String) attrs.get(Constants.DIALOG_FRAMEWORK.OUTCOME); Map<String, String> requestParams = context.getExternalContext().getRequestParameterMap(); NavigationCase navCase = getNavigationCase(context, fromAction, dialogOutcome); String toViewId = navCase.getToViewId(context); Map<String, Object> options = (Map<String, Object>) attrs.get(Constants.DIALOG_FRAMEWORK.OPTIONS); Map<String, List<String>> params = (Map<String, List<String>>) attrs.get(Constants.DIALOG_FRAMEWORK.PARAMS); String url = context.getApplication().getViewHandler().getBookmarkableURL(context, toViewId, params, includeViewParams); url = EscapeUtils.forJavaScript(url);
Map<String, List<String>> navCaseParams = navCase.getParameters(); if (navCaseParams != null && !navCaseParams.isEmpty()) { if (params == null) { String toFlowDocumentId = navCase.getToFlowDocumentId(); if (toFlowDocumentId != null) { if (params == null) { flowIdValues.add(navCase.getFromOutcome()); params.put(FlowHandler.FLOW_ID_REQUEST_PARAM_NAME, flowIdValues);
protected boolean isIncludeViewParams(UIOutcomeTarget outcomeTarget, NavigationCase navCase) { return outcomeTarget.isIncludeViewParams() || navCase.isIncludeViewParams(); }
public URL getBookmarkableURL(FacesContext context) throws MalformedURLException { ExternalContext externalContext = context.getExternalContext(); return new URL(externalContext.getRequestScheme(), externalContext.getRequestServerName(), externalContext.getRequestServerPort(), context.getApplication().getViewHandler().getBookmarkableURL(context, getToViewId(context), _NavigationUtils.getEvaluatedNavigationParameters(context, getParameters()), isIncludeViewParams())); }
ExternalContext extContext = context.getExternalContext(); ViewHandler viewHandler = Util.getViewHandler(context); assert (null != viewHandler); Flash flash = extContext.getFlash(); boolean isUIViewActionBroadcastAndViewdsDiffer = false; if (UIViewAction.isProcessingBroadcast(context)) { flash.setKeepMessages(true); String viewIdBefore = context.getViewRoot().getViewId(); viewIdBefore = (null == viewIdBefore) ? "" : viewIdBefore; String viewIdAfter = caseStruct.navCase.getToViewId(context); viewIdAfter = (null == viewIdAfter) ? "" : viewIdAfter; isUIViewActionBroadcastAndViewdsDiffer = !viewIdBefore.equals(viewIdAfter); if (caseStruct.navCase.isRedirect() || isUIViewActionBroadcastAndViewdsDiffer) { viewHandler.getRedirectURL(context, caseStruct.viewId, SharedUtils.evaluateExpressions(context, caseStruct.navCase.getParameters()), caseStruct.navCase.isIncludeViewParams()); try { if (logger.isLoggable(Level.FINE)) { extContext.redirect(redirectUrl); } catch (java.io.IOException ioe) { if (logger.isLoggable(Level.FINE)) { UIViewRoot newRoot = viewHandler.createView(context, caseStruct.viewId);
public URL getResourceURL(FacesContext context) throws MalformedURLException { ExternalContext externalContext = context.getExternalContext(); return new URL(externalContext.getRequestScheme(), externalContext.getRequestServerName(), externalContext.getRequestServerPort(), context.getApplication().getViewHandler().getResourceURL(context, getToViewId(context))); }
public URL getActionURL(FacesContext context) throws MalformedURLException { ExternalContext externalContext = context.getExternalContext(); return new URL(externalContext.getRequestScheme(), externalContext.getRequestServerName(), externalContext.getRequestServerPort(), context.getApplication().getViewHandler().getActionURL(context, getToViewId(context))); }
private CaseStruct findReturnMatch(FacesContext context, String fromAction, String outcome) { FlowHandler flowHandler = context.getApplication().getFlowHandler(); if (null == flowHandler) { return null; result = new CaseStruct(); result.viewId = toViewId; result.navCase = new NavigationCase(context.getViewRoot().getViewId(), fromAction, outcome, null, toViewId, FlowHandler.NULL_FLOW, null, false, false);
url = "#".equals(href) ? "#" : context.getExternalContext().encodeRedirectURL(href, outcomeTarget.getParams()); String toViewId = navCase.getToViewId(context); boolean isIncludeViewParams = isIncludeViewParams(outcomeTarget, navCase); Map<String, List<String>> params = getParams(context, navCase, outcomeTarget); && outcomeTarget.isDisableClientWindow()) { clientWindow = context.getExternalContext().getClientWindow(); url = context.getApplication().getViewHandler().getBookmarkableURL(context, toViewId, params, isIncludeViewParams);
public String getEncodedTargetURL(FacesContext context, NavigationCase navCase) { String toViewId; if (navCase != null) { toViewId = navCase.getToViewId(context); } else { toViewId = getOutcome(); if (toViewId == null) { toViewId = context.getViewRoot().getViewId(); } else if (!"".equals(toViewId) && !toViewId.substring(0, 1).equals("/")) { toViewId = "/" + toViewId; } } Map<String,List<String>> params = new java.util.HashMap<String,List<String>>(); String result = null; result = context.getApplication().getViewHandler().getBookmarkableURL(context, toViewId, params, false); return result; } }
public void handleNavigation(FacesContext context, String fromAction, String outcome) { final NavigationCase navigationCase = getNavigationCase(context, fromAction, outcome); boolean redirect = navigationCase != null && navigationCase.isRedirect(); Map<String, Object> beans = Collections.EMPTY_MAP; if (redirect) { //save bean names that are disposed by JSF's view bean manager beans = new HashMap(); Set<Map.Entry<String, Object>> viewMapEntries = context.getViewRoot().getViewMap().entrySet(); for (Map.Entry<String, Object> viewMapEntry : viewMapEntries) { if (viewMapEntry.getValue().getClass().isAnnotationPresent(ViewScoped.class)) { beans.put(viewMapEntry.getKey(), viewMapEntry.getValue()); } } } handler.handleNavigation(context, fromAction, outcome); if (redirect && !beans.isEmpty()) { //add back no-op beans to avoid having them re-initialized when dispose-window request is sent Map viewMap = context.getViewRoot().getViewMap(); viewMap.putAll(beans); } }
boolean match = false; for (NavigationCase cnc : caseSet) { String cncFromAction = cnc.getFromAction(); String cncFromOutcome = cnc.getFromOutcome(); boolean cncHasCondition = cnc.hasCondition(); String cncToViewId = cnc.getToViewId(ctx); result.viewId = cncToViewId; result.navCase = cnc; if (cncHasCondition && Boolean.FALSE.equals(cnc.getCondition(ctx))) { match = false; } else { toFlowDocumentId = (null != cnc.getToFlowDocumentId()) ? cnc.getToFlowDocumentId() : toFlowDocumentId; if (null != toFlowDocumentId) { FlowHandler fh = ctx.getApplication().getFlowHandler(); if (null != outcome) { result.isFlowEntryFromExplicitRule = null != fh.getFlow(ctx, toFlowDocumentId, convertToViewIdToFlowOrNodeId(ctx, result));
public void handleNavigation(FacesContext context, String fromAction, String outcome) { if (EnvUtils.isICEfacesView(context) && EnvUtils.isReplayNavigationOnReload(context)) { NavigationCase navigationCase = getNavigationCase(context, fromAction, outcome); if (navigationCase != null && !navigationCase.isRedirect()) { UIViewRoot viewRoot = context.getViewRoot(); String fromViewId = viewRoot.getViewId(); Map map = WindowScopeManager.lookupWindowScope(context); map.put(NavigationKey, new NavigationInfo(fromViewId, fromAction, outcome, handler)); } } handler.handleNavigation(context, fromAction, outcome); }
@Override public NavigationCase getNavigationCase(FacesContext context, String fromAction, String outcome) { if (SpringFacesContext.getCurrentInstance() != null) { PreRenderComponentEvent preRenderComponentEvent = MvcNavigationSystemEventListener .getLastPreRenderComponentEvent(context); UIComponent component = (preRenderComponentEvent == null ? null : preRenderComponentEvent.getComponent()); String defaultDestinationViewId = getDefaultDestinationViewId(context, fromAction, outcome); NavigationContext navigationContext = new NavigationContextImpl(fromAction, outcome, true, component, defaultDestinationViewId); if (this.navigationOutcomeResolver.canResolve(context, navigationContext)) { try { NavigationOutcome navigationOutcome = this.navigationOutcomeResolver.resolve(context, navigationContext); Assert.state(navigationOutcome != null, "Unable to resolve required navigation outcome '" + outcome + "'"); UIViewRoot root = context.getViewRoot(); String fromViewId = (root != null ? root.getViewId() : null); String toViewId = this.destinationAndModelRegistry.put(context, new DestinationAndModel( navigationOutcome, preRenderComponentEvent)); return new NavigationCase(fromViewId, fromAction, outcome, null, toViewId, null, false, false); } catch (Exception e) { throw new FacesException(e); } } } return super.getNavigationCase(context, fromAction, outcome); }
@Override public Map<String, List<String>> getParameters() { if (parameters == null) { parameters = super.getParameters(); if (parameters == null) { FacesContext facesContext = FacesContext.getCurrentInstance(); parameters = URLUtil.parseParameterMapValuesList(wrappedNavigationCase.getToViewId(facesContext)); } } return parameters; }
@Override public String getFromOutcome() { return getWrapped().getFromOutcome(); }
@Override public boolean isRedirect() { return getWrapped().isRedirect(); }
@Override public String getFromAction() { return getWrapped().getFromAction(); }
@Override public Boolean getCondition(FacesContext context) { return getWrapped().getCondition(context); }
@Override public String getToFlowDocumentId() { return getWrapped().getToFlowDocumentId(); }