Spring context.xml e Set.contains ()
Domanda
Primavera: nel mio context.xml, ho:
<util:set id="someIDs"
set-class="java.util.HashSet"
value-type="java.lang.String">
<value>"W000000001"</value>
<value>"W000000003"</value>
<value>"W000000009"</value>
</util:set>
Nel mio bean Java, l'implementazione è:
private Set<String> someSet =
ComUtilities.uncheckedCast(getApplicationContext()
.getBean("someIDs"));
boolean found = someSet.contains("W000000009");
Dopo l'esecuzione del blocco di codice avobe, found è stranamente falso! Come mai? Qualche suggerimento / idea? Grazie mille.
Soluzione
In cima alla mia testa - Sono abbastanza sicuro che Spring non abbia bisogno di doppie virgolette per i dati String. Quindi probabilmente sta inserendo quelle stringhe nella mappa con caratteri a virgoletta reale all'inizio e alla fine.
Prova a controllare
boolean found = someSet.contains("\"W000000009\"");
per vedere se questo è il caso.
Altri suggerimenti
Penso che sia perché hai citato i valori nella configurazione Spring e quindi il controllo del contenuto sta cercando una stringa non quotata. Sostituisci la tua configurazione di primavera con questa:
<util:set id="someIDs"
set-class="java.util.HashSet"
value-type="java.lang.String">
<value>W000000001</value>
<value>W000000003</value>
<value>W000000009</value>