code: private String buildStandardOutcome()
     {
        StringBuilder outcome = new StringBuilder();
        outcome.append(viewId);
  
        boolean first = true;
        for (Entry<String, List<String>> param : parameters.entrySet()) {
  
           for (String value : param.getValue()) {
  
              outcome.append(first ? '?' : '&');
  
              outcome.append(param.getKey());
              outcome.append('=');
              outcome.append(value);
  
              first = false;
  
           }
  
        }
  
        return outcome.toString();
     }
docs: Builds a standard JSF 2.0 implicit navigation outcome