Spring SpEL - Array



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