”;
SpEL expression supports accessing arrays and using their indexes of an array of an object.
-
We can access nested arrays 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 String[] awards; public String[] getAwards() { return awards; } public void setAwards(String[] awards) { this.awards = awards; } }
Here is the content of Dept.java file −
package com.tutorialspoint; public class Dept { private Employee[] employees; public Employee[] getEmployees() { return employees; } public void setEmployees(Employee[] employees) { this.employees = employees; } }
Here is the content of MainApp.java file −
package com.tutorialspoint; import java.text.ParseException; import java.text.SimpleDateFormat; 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(); String[] awards = {"Star of the Month", "Champion", "Accelerator"}; employee.setAwards(awards); Employee[] employees = { employee }; Dept dept = new Dept(); dept.setEmployees(employees); EvaluationContext employeeContext = new StandardEvaluationContext(employee); // evaluates to "Accelerator" String award = parser.parseExpression("awards[2]").getValue(employeeContext, String.class); System.out.println(award); EvaluationContext deptContext = new StandardEvaluationContext(dept); // evaluates to "Champion" award = parser.parseExpression("employees[0].awards[1]").getValue(deptContext, String.class); System.out.println(award); } }
Output
Accelerator Champion
Advertisements
”;