code: protected void populateParamsForMapping(GrailsWebRequest webRequest) {
          Map dispatchParams = webRequest.getParams();
          String encoding = webRequest.getRequest().getCharacterEncoding();
          if (encoding == null) encoding = "UTF-8";
  
          for (Map.Entry<String, Object> entry : params.entrySet()) {
              String name = entry.getKey();
              Object param = entry.getValue();
              if (param instanceof Closure) {
                  param = evaluateNameForValue(param);
              }
              if (param instanceof CharSequence) {
                  param = param.toString();
              }
              dispatchParams.put(name, param);
          }
  
          final String viewName = getViewName();
          if (viewName == null && getURI() == null) {
              webRequest.setControllerNamespace(getNamespace());
              webRequest.setControllerName(getControllerName());
              webRequest.setActionName(getActionName());
          }
  
          String id = getId();
          if (!GrailsStringUtils.isBlank(id)) try {
              dispatchParams.put(GrailsWebRequest.ID_PARAMETER, URLDecoder.decode(id, encoding));
          }
          catch (UnsupportedEncodingException e) {
              dispatchParams.put(GrailsWebRequest.ID_PARAMETER, id);
          }
      }
docs: Populates request parameters for the given UrlMappingInfo instance using the GrailsWebRequest
  
  @param webRequest The Map instance
  @see org.grails.web.servlet.mvc.GrailsWebRequest