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です。

私はparamListそれを処理できるように、URLと個別に必要です。

URL と対応する URL の paramlist を取得し、paramList を userdefined に戻し、さらに処理するための値に変換しようとしています。

4

1 に答える 1

2

最善の解決策は、おそらく 2 つの別個のマップを用意することです。1 つは URL 用で、もう 1 つはパラメーター用です。


ただし、マップは URL とパラメーターを格納するためのリストとしてのみ使用するため、マップは必要ないようです。したがって、URL に 1 つのリストを使用し、params に 1 つのリストを使用することを検討する必要がありiます。現在マップのキーである文字列に追加すると、リストのインデックスになります。

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

その後、これらのリストを繰り返し処理して、挿入された値を取得します。

于 2013-04-25T09:56:06.027 に答える