मैं वर्तमान में एक एपीआई नियंत्रक पर काम कर रहा हूं। यह नियंत्रक किसी भी पकड़ने में सक्षम होना चाहिए - अज्ञात - पैरामीटर और इसे Map
ऑब्जेक्ट में रखें। अब मैं सभी मापदंडों को पकड़ने और उन्हें एक Map
स्प्रिंग एमवीसी + अनुरोधपाराम मानचित्र के रूप में + यूआरएल सरणी पैरामीटर काम नहीं कर रहे हैं
public String processGetRequest(final @RequestParam Map params)
में डालने के लिए इस कोड का उपयोग कर रहा हूँ अब यूआरएल मैं फोन इस प्रकार है:
server/api.json?action=doSaveDeck&Card_IDS[]=1&Card_IDS[]=2&Card_IDS[]=3
तब मैं मानकों प्रिंट आउट, डीबगिंग उद्देश्यों के लिए , कोड के इस टुकड़े के साथ:
if (logger.isDebugEnabled()) {
for (Object objKey : params.keySet()) {
logger.debug(objKey.toString() + ": " + params.get(objKey));
}
}
कि का परिणाम है:
10:43:01,224 DEBUG ApiRequests:79 - action: doSaveDeck
10:43:01,226 DEBUG ApiRequests:79 - Card_IDS[]: 1
लेकिन अपेक्षित परिणाम होना चाहिए कुछ की तरह:
10:43:XX DEBUG ApiRequests:79 - action: doSaveDeck
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 1
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 2
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 3
या कम से कम मुझे बताया कि Card_IDS एक String[]/List<String>
है और इसलिए casted किया जाना चाहिए। NameConfiguration.PARAM_NAME_CARDIDS
का उपयोग करके Map params
से - - यह गतिशील होना चाहिए
for (Object objKey : params.keySet()) {
if(objKey.equals(NameConfiguration.PARAM_NAME_CARDIDS)){ //Never reaches this part
List<String> ids = (List<String>)params.get(objKey);
for(String id : ids){
logger.debug("Card: " + id);
}
} else {
logger.debug(objKey + ": " + params.get(objKey));
}
}
कोई मुझे बताओ कि सरणी प्राप्त करने के लिए Card_IDS
किया जा सका: मैं भी एक List<String>
मैन्युअल लेकिन है कि या तो काम नहीं करता है करने के लिए पैरामीटर कास्टिंग की कोशिश की?