/** * Convert given encoded view into an appropriate view selector. * @param encodedView the encoded view selector * @return the view selector */ protected ViewSelector convertEncodedViewSelector(String encodedView) { if (encodedView.startsWith(REDIRECT_PREFIX)) { String viewName = encodedView.substring(REDIRECT_PREFIX.length()); Expression viewNameExpr = (Expression) fromStringTo(Expression.class).execute(viewName); // just show the application view using a redirect return new ApplicationViewSelector(viewNameExpr, true); } else if (encodedView.startsWith(EXTERNAL_REDIRECT_PREFIX)) { String externalUrl = encodedView.substring(EXTERNAL_REDIRECT_PREFIX.length()); Expression urlExpr = (Expression) fromStringTo(Expression.class).execute(externalUrl); return new ExternalRedirectSelector(urlExpr); } else if (encodedView.startsWith(FLOW_DEFINITION_REDIRECT_PREFIX)) { String flowRedirect = encodedView.substring(FLOW_DEFINITION_REDIRECT_PREFIX.length()); Expression redirectExpr = (Expression) fromStringTo(Expression.class).execute(flowRedirect); return new FlowDefinitionRedirectSelector(redirectExpr); } else if (encodedView.startsWith(BEAN_PREFIX)) { String id = encodedView.substring(BEAN_PREFIX.length()); return flowServiceLocator.getViewSelector(id); } else { Expression viewNameExpr = (Expression) fromStringTo(Expression.class).execute(encodedView); return new ApplicationViewSelector(viewNameExpr); } } }