code: private String determineTargetURL(FacesContext context, Button button, String outcome) {
  		ConfigurableNavigationHandler cnh = (ConfigurableNavigationHandler) context.getApplication()
  				.getNavigationHandler();
  		NavigationCase navCase = cnh.getNavigationCase(context, null, outcome);
  		/*
  		 * Param Name: javax.faces.PROJECT_STAGE Default Value: The default
  		 * value is ProjectStage#Production but IDE can set it differently in
  		 * web.xml Expected Values: Development, Production, SystemTest,
  		 * UnitTest Since: 2.0
  		 *
  		 * If we cannot get an outcome we use an Alert to give a feedback to the
  		 * Developer if this build is in the Development Stage
  		 */
  		if (navCase == null) {
  			if (FacesContext.getCurrentInstance().getApplication().getProjectStage().equals(ProjectStage.Development)) {
  				return "alert('WARNING! " + C.W_NONAVCASE_BUTTON + "');";
  			} else {
  				return "";
  			}
  		} // throw new FacesException("The outcome '"+outcome+"' cannot be
  			// resolved."); }
  		String vId = navCase.getToViewId(context);
  
  		Map<String, List<String>> params = getParams(navCase, button);
  		String url;
  		url = context.getApplication().getViewHandler().getBookmarkableURL(context, vId, params,
  				button.isIncludeViewParams() || navCase.isIncludeViewParams());
  		return url;
  	}
docs: Translate the outcome attribute value to the target URL.
  
  @param context
  the current FacesContext
  @param outcome
  the value of the outcome attribute
  @return the target URL of the navigation rule (or the outcome if there's
  not navigation rule)