@Override
  public Object resolveArgument(
      MethodParameter parameter,
      ModelAndViewContainer mavContainer,
      NativeWebRequest webRequest,
      WebDataBinderFactory binderFactory)
      throws Exception {

    ParamCollector paramCollector = new ParamCollector();

    for (Iterator<String> it = webRequest.getParameterNames(); it.hasNext(); ) {
      String key = it.next();

      String[] val = webRequest.getParameterValues(key);
      if (val.length > 1) {
        paramCollector.put(key, val);
      } else {
        paramCollector.put(key, val[0]);
      }

      // String value = webRequest.getParameter(key);
      // paramCollector.put(key, value);
    }
    return paramCollector;
  }
Exemple #2
0
  /**
   * Subclasses may override this for covariant result types
   *
   * <p>{@inheritDoc}
   */
  @SuppressWarnings("deprecation")
  @Override
  public Query bind(String param, Object value) {
    try {
      int index = Integer.valueOf(param);
      return bind(index, value);
    } catch (NumberFormatException e) {
      ParamCollector collector = new ParamCollector(configuration(), true);
      collector.visit(this);
      List<Param<?>> params = collector.result.get(param);

      if (params == null || params.size() == 0)
        throw new IllegalArgumentException("No such parameter : " + param);

      for (Param<?> p : params) {
        p.setConverted(value);
        closeIfNecessary(p);
      }

      return this;
    }
  }