2016-10-12 2 views
4

Sagen Sie, wenn ich eine ArrayList mit Benutzerobjekten habe.Wie überprüft man, ob die Liste der Objekte eine Zeichenfolge enthält, die thymeleaf verwendet?

User.java

class User{ 
    private Long id; 
    private String name; 
} 

Ich habe eine Liste mit den Nutzern

list.add(new User(1,"John"); 
list.add(new User(2,"Sam"); 

ich in thymeleaf überprüfen möge, ob Benutzerliste einen Benutzer mit dem Namen "Sam" mit.

${#lists.contains(userList.name,'Sam')} 

Aber die oben funktioniert nicht und wirft Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression

ich auch mit " (doube Anführungszeichen) versucht haben

+1

$ {# lists.contains (userlist verwenden können,‘ Sam ')} sollte funktionieren, wenn es eine Liste von Strings - Liste wäre. Aber Sie haben eine Liste von Objekten. –

+0

@lukasgrygar so wie überprüfe ich die Zeichenfolge enthält in Objekteigenschaften? – Lucky

Antwort

2

Sie können dies die Collection Selection Merkmal Spring Expression Language erreichen verwenden.

10.5.17 Kollektion Selection

Selection ist ein starker Ausdruck Sprache-Funktion, die Sie verwandeln einige Quellensammlung in eine andere ermöglicht durch von seiner Einträge auswählen.

Auswahl verwendet die Syntax ?[selectionExpression]. Dies filtert die Sammlung und gibt eine neue Sammlung zurück, die eine Teilmenge der ursprünglichen Elemente enthält.

In Ihrem Fall wäre es:

${not userList.?[name == 'Sam'].isEmpty()} 
-1
list.add(new User(1, "John"); 
list.add(new User(2, "Sam"); 

Normalerweise Sie

${list.contains(`Sam`)} or ${list.contains("Sam")} 

testen

Verwandte Themen