Salve a tutti, sto cercando di scrivere un'espressione SpEL per ottenere un Set a partire da una Stringa (che verrà splittata).
Faccio questo perché devo passare dei valori filtro (stringhe) ad un bean attraverso i parametri del job. Il problema è che questo bean (che non ho scritto io e che non posso modificare) accetta solo Set<String> e attraverso i JobParameters non posso passare altro che String, Long, Date e poco altro...
Detto questo, ho fatto questo piccolo test per verificare l'espressione ma non capisco perché il risultato è sbagliato:
Come output mi aspetto di vedere i due valori 7 e 9, di classe String. Questo invece è quello che ottengo:codice:ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("new java.util.TreeSet(T(java.util.Arrays).asList(new java.lang.String('7;9').split(';')))"); System.out.println("Value type = " + exp.getValueType()); TreeSet<String> set = (TreeSet<String>) exp.getValue(); System.out.println("SET= " + set); for ( Object o : set ) { System.out.println("OGGETTO = " + o); System.out.println("CLASSE = " + o.getClass()); }
Value type = class java.util.TreeSet
SET= [[Ljava.lang.String;@4f4db0e3]
OGGETTO = [Ljava.lang.String;@4f4db0e3
CLASSE = class [Ljava.lang.String;
In pratica sembra che la chiamata a asList non venga fatta, infatti mi trovo l'array non splittato all'interno del TreeSet. Perché? Cosa sbaglio? Grazie![]()

Rispondi quotando