Tôi hiện đang làm việc trên bộ điều khiển API. Bộ điều khiển này có thể bắt bất kỳ số nào - không rõ - tham số và đặt nó trong đối tượng Map
. Bây giờ tôi đang sử dụng mã này để bắt tất cả các thông số và đặt chúng trong một Map
Spring MVC + RequestParam dưới dạng Bản đồ + lấy tham số mảng URL không hoạt động
public String processGetRequest(final @RequestParam Map params)
Bây giờ url tôi gọi là như sau:
server/api.json?action=doSaveDeck&Card_IDS[]=1&Card_IDS[]=2&Card_IDS[]=3
Sau đó, tôi in ra các thông số, cho mục đích gỡ lỗi , với đoạn mã này:
if (logger.isDebugEnabled()) {
for (Object objKey : params.keySet()) {
logger.debug(objKey.toString() + ": " + params.get(objKey));
}
}
kết quả của việc đó là:
10:43:01,224 DEBUG ApiRequests:79 - action: doSaveDeck
10:43:01,226 DEBUG ApiRequests:79 - Card_IDS[]: 1
Nhưng kết quả mong đợi nên một cái gì đó như:
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
Hoặc ít nhất cho tôi biết rằng Card_IDS là một String[]/List<String>
và do đó cần được đúc. Tôi cũng đã cố gắng đúc các tham số để một List<String>
bằng tay nhưng điều đó không làm việc, hoặc:
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));
}
}
Có thể ai đó cho tôi biết làm thế nào để có được mảng Card_IDS
- Nó phải là động - từ Map params
bằng NameConfiguration.PARAM_NAME_CARDIDS
?