2014-10-20 13 views
6

Sto provando a filtrare la raccolta usando Thymeleaf seguendo l'esempio nel seguente url. "Proiezione & selezione sulla raccolta" sezione. http://doanduyhai.wordpress.com/2012/04/14/spring-mvc-part-iv-thymeleaf-advanced-usage/Come filtrare una raccolta in thymeleaf th: ognuno utilizza un'altra proprietà in confronto

<tr th:each="artist,rowStat : ${listArtits.?[alive == true]}"> 
... 
</tr> 

Tuttavia vorrei usare un'altra proprietà al posto di valore fisso (vero/falso). Ad esempio

<tr th:each="artist,rowStat : ${listArtits.?[played > playedCountReq]}"> 
... 
</tr> 

dove come playedCountReq è un'altra variabile modulo disponibile per Thymeleaf. Ottengo il seguente errore. Proprietà o campo 'playedCountReq' non può essere trovato su oggetto di tipo ...

Ho provato diversi modi ma nessun successo. Eventuali suggerimenti?

+0

L'unica soluzione/soluzione che ho trovato finora è l'uso di th: block. Sposta il th: each in th: block e th: se nel tag tr – gmansoor

+0

inserisci il codice per l'intero modulo/tabella in questo modo possiamo vedere l'immagine completa – Aeseir

risposta

5

io sono succeduti :) Ecco la soluzione:

controller:

(...) 
Person p1 = new Person(); 
p1.setAge(20); 
Person p2 = new Person(); 
p2.setAge(30); 
List<Person> list = Lists.newArrayList(p1,p2); 
modelMap.addAttribute("list", list); 
Integer minAge = 13; 
modelMap.addAttribute("minAge", minAge); 
(...) 

in html:

<table th:with="min=${minAge}"> 
<tr th:each="person,rowStat : ${list.?[age > __${min}__]}"> 
<td><span th:text="${person.age}"></span></td> 
</tr> 
</table> 

uscita:

30 

Spero che questo aiuto

+0

impressionante - quindi usando $ {minAge} in ogni blocco non funziona? – gmansoor

+0

non ho cercato di essere onesto: P –

0

All'interno del filtro di selezione, le proprietà non qualificate sono relative all'elemento della raccolta che viene filtrata. Ma la variabile #root viene sempre definita come l'oggetto contesto radice. In questo modo è possibile fare riferimento alle variabili a livello di radice all'interno del filtro di selezione.

<tr th:each="artist,rowStat : ${listArtists.?[played gt #root.playedCountReq]}"> 
… 
</tr> 

, consultare la sezione "The #this and #root variables" nella documentazione di primavera EL per ulteriori informazioni a.

Problemi correlati