I metodi AuraEnabled non supportano il tipo restituito di Map <String, Set <String>>
Questo è il mio codice in apex, ma mostra i metodi Error-AuraEnabled non supportano il tipo di ritorno di Map<String, Set<String>>
Non capisco cosa c'è di sbagliato nel mio codice e perché map<string, set<string>>non funziona, mentre Map<string, list<string>>funziona bene.
public class testmap {
@AuraEnabled
Public static Map<string,set<string>> getmap() {
Map<string,set<string>> accountmap=new Map<string,set<string>>();
set<string> valueset=new set<string>();
valueset.add('Value1');
accountmap.put('Key1',valueset);
system.debug('Maptest'+accountmap);
return accountmap;
}
}
Risposte
Questo errore si verifica perché, da qualche parte lungo la strada, Set non è supportato inviato al client, quindi invece di rompere le cose, semplicemente non consentono quel tipo di ritorno per ora. Presumo che salesforce.com abbia bloccato questo tipo di restituzione fino a quando la conversione sul client non corrisponde, piuttosto che convertirla implicitamente in un array, il che potrebbe interrompere i loro piani per una modifica futura quando Set è adeguatamente supportato (immagina che il tuo codice un giorno si interrompa perché il tipo di client è cambiato da Array a Set). La soluzione più ovvia, per ora, è invece restituire un List. Puoi usare un metodo di supporto per questo:
static Map<String, List<String>> convertToMapList(Map<String, Set<String>> source) {
Map<String, List<String>> result = new Map<String, List<String>>();
for(String key: source.keySet()) {
result.put(key, new List<String>(source.get(key)));
}
return result;
}
Questo tamponamento ti consentirà di tornare abbastanza facilmente a Map<String, Set<String>>quando / se questo tipo di dati diventa supportato ed evita anche una riscrittura totale del codice.