”;
SpEL expression supports accessing list and using their indexes of an list of an object.
-
We can access nested lists as well within an SpEL expression.
Following example shows the various use cases.
Example
Let”s update the project created in Spring SpEL – Create Project chapter. We”re adding/updating following files −
-
Employee.java − Employee class.
-
Dept.java − Department class.
-
MainApp.java − Main application to run and test.
Here is the content of Employee.java file −
package com.tutorialspoint; public class Employee { private List<String> awards; public List<String> getAwards() { return awards; } public void setAwards(List<String> awards) { this.awards = awards; } }
Here is the content of Dept.java file −
package com.tutorialspoint; public class Dept { private List<Employee> employees; public List<Employee> getEmployees() { return employees; } public void setEmployees(List<Employee> employees) { this.employees = employees; } }
Here is the content of MainApp.java file −
package com.tutorialspoint; import java.text.ParseException; import java.util.Arrays; import org.springframework.expression.EvaluationContext; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; public class MainApp { public static void main(String[] args) throws ParseException { ExpressionParser parser = new SpelExpressionParser(); Employee employee = new Employee(); employee.setAwards(Arrays.asList("Star of the Month", "Champion", "Accelerator")); Dept dept = new Dept(); dept.setEmployees(Arrays.asList(employee)); EvaluationContext employeeContext = new StandardEvaluationContext(employee); // evaluates to "Accelerator" String award = parser.parseExpression("awards.get(2)").getValue(employeeContext, String.class); System.out.println(award); EvaluationContext deptContext = new StandardEvaluationContext(dept); // evaluates to "Champion" award = parser.parseExpression("employees.get(0).awards.get(1)").getValue(deptContext, String.class); System.out.println(award); } }
Output
Accelerator Champion
Advertisements
”;