0

我有以下 LinkedHashMap 我以下列方式将值放入其中:

if (preAuthorizeAnnotation != null) {
    requestMappingValues = requestMappingAnnotation.value(); // to get the url value
    RequestMethod[] methods = requestMappingAnnotation.method(); // to get the request method type
    System.out.println(+i + ":Method  : " + method2.getName() + " is secured   ");
    //System.out.println("Requestion method type : "+methods[0].name());
    Class[] parameterTypes = method2.getParameterTypes();
    for (Class class1: parameterTypes) {
        userDefinedParams = new UserDefinedParams();
        strClassNameToFix = class1.getName();
        strClassname = strClassNameToFix.replaceAll("\\[L", "").replaceAll("\\;", "");
        if (class1.isArray()) {

            //classObj = strClassnames.substring(strClassnames.lastIndexOf('.')+1, strClassnames.length()-1);
            userDefinedParams.setDataType(strClassname);
            userDefinedParams.setIsArray("Y");
            paramsList.add(userDefinedParams);
        } else if (class1.isPrimitive() && class1.isArray()) {
            userDefinedParams.setDataType(strClassname);
            userDefinedParams.setIsArray("Y");
            paramsList.add(userDefinedParams);
        } else {
            userDefinedParams.setDataType(strClassname);
            userDefinedParams.setIsArray("N");
            paramsList.add(userDefinedParams);
        }
        System.out.println("strClassname : " + strClassname);
    }
    paramsMap.put("url_" + i, requestMappingValues[0]);
    paramsMap.put("params_" + i, paramsList);

我尝试循环遍历地图,如下所示:

for (Object key: paramsMap.keySet()) {
    uri = "http://localhost:8080/api" + paramsMap.get(key);
    statusCode = httpRequest.handleHTTPRequest(client, uri);
    System.out.println("Statuscode : " + statusCode);
}

我得到以下异常:

java.lang.IllegalArgumentException

因为它第一次得到url正确但错过了params.

我想要 url 和paramList单独的,以便我可以处理它。

我正在尝试获取 url 和对应的参数列表,并将 paramList 转换回用户定义和进一步处理的值。

4

1 回答 1

2

最好的解决方案可能是拥有 2 个单独的映射:一个用于 url,另一个用于参数。


但是,您似乎不需要地图,因为您只将它们用作存储 url 和参数的列表。因此,您应该考虑为 url 使用一个列表,为参数使用一个列表,i您当前附加到作为地图中键的 String 将是列表中的索引:

 urls.add(requestMappingValues[0]);
 params.add(paramsList);

稍后您只需遍历这些列表以检索插入的值。

于 2013-04-25T09:56:06.027 回答