code: public URL buildURL(final UrlMapping mapping)
     {
        URL result = null;
  
        String expression = "";
        Object value = null;
        try
        {
           FacesContext context = FacesContext.getCurrentInstance();
  
           URLPatternParser parser = mapping.getPatternParser();
           List<PathParameter> parameters = parser.getPathParameters();
           List<String> parameterValues = new ArrayList<String>();
           for (PathParameter injection : parameters)
           {
              // read value of the path parameter
              expression = injection.getExpression().getELExpression();
              value = elUtils.getValue(context, expression);
              if (value == null)
              {
                 throw new PrettyException("PrettyFaces: Exception occurred while building URL for MappingId < "
                          + mapping.getId() + " >, Required value " + " < " + expression + " > was null");
              }
  
              // convert the value to a string using the correct converter
              Converter converter = context.getApplication().createConverter(value.getClass());
              if (converter != null)
              {
                 String convertedValue = converter.getAsString(context, new NullComponent(), value);
                 if (convertedValue == null)
                 {
                    throw new PrettyException("PrettyFaces: The converter <" + converter.getClass().getName()
                             + "> returned null while converting the object <" + value.toString() + ">!");
                 }
                 value = convertedValue;
              }
  
              parameterValues.add(value.toString());
           }
  
           result = parser.getMappedURL(parameterValues).encode();
        }
        catch (ELException e)
        {
           throw new PrettyException("PrettyFaces: Exception occurred while building URL for MappingId < "
                    + mapping.getId() + " >, Error occurred while extracting values from backing bean" + " < "
                    + expression + ":" + value + " >", e);
        }
  
        return result;
     }
docs: For all required values of the given PrettyUrlMapping, extract values from their mapped backing beans and create a
  URL based on the url-pattern.
  
  @param mapping Mapping for which to extract values and generate URL
  @return The fully constructed URL