tl  tr
  Home | Tutorials | Articles | Videos | Products | Tools | Search
Interviews | Open Source | Tag Cloud | Follow Us | Bookmark | Contact   
 Tools and Libs > Jodd > Beans > How to get nested bean properties

How to get nested bean properties 

Jodd is an open-source java library with lot of reusable components and feature rich utilities. This requires the library jodd-3.3.2.jar to be in classpath. The following example shows how to get nested bean properties using BeanUtil.getProperty() API. The special self-reference variable *this refers to current reference.

File Name  :  
com/bethecoder/tutorials/jodd/common/ComplexBean.java 
   
package com.bethecoder.tutorials.jodd.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ComplexBean {

  private List<Student> studentList = new ArrayList<Student>();
  private Map<String, List<Student>> subjectStudentMap = new HashMap<String, List<Student>>();
  
  public List<Student> getStudentList() {
    return studentList;
  }
  public void setStudentList(List<Student> studentList) {
    this.studentList = studentList;
  }
  public Map<String, List<Student>> getSubjectStudentMap() {
    return subjectStudentMap;
  }
  public void setSubjectStudentMap(Map<String, List<Student>> subjectStudentMap) {
    this.subjectStudentMap = subjectStudentMap;
  }
}
   

File Name  :  
com/bethecoder/tutorials/jodd/common/Student.java 
   
package com.bethecoder.tutorials.jodd.common;

public class Student implements java.io.Serializable {

  private static final long serialVersionUID = -5962595557796049374L;
  private String name;
  private int age;
  private String hobby;

  public Student() {
  }

  public Student(String name, int age, String hobby) {
    super();
    this.name = name;
    this.age = age;
    this.hobby = hobby;
  }

  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public String getHobby() {
    return hobby;
  }
  public void setHobby(String hobby) {
    this.hobby = hobby;
  }
  
  public String toString() {
    return "Student[name = " + name + ", age = " + age + ", hobby = " + hobby + "]";
  }
}
   

File Name  :  
com/bethecoder/tutorials/jodd/beans/GetNestedPropertyTest.java 
Author  :  Sudhakar KV
Email  :  [email protected]
   
package com.bethecoder.tutorials.jodd.beans;

import java.util.Arrays;

import jodd.bean.BeanUtil;

import com.bethecoder.tutorials.jodd.common.ComplexBean;
import com.bethecoder.tutorials.jodd.common.Student;

public class GetNestedPropertyTest {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    Student student = new Student("Sriram"2"Chess");
    Student student2 = new Student("Sudhakar"29"Painting");
    Student student3 = new Student("Charan"18"Reading books");
    
    ComplexBean complexBean = new ComplexBean();
    complexBean.getStudentList().addAll(Arrays.asList(student, student2, student3));
  
    complexBean.getSubjectStudentMap().put("MATHS"
        Arrays.asList(student, student2, student3));
    complexBean.getSubjectStudentMap().put("PHYSICS"
        Arrays.asList(student, student2));
    
    
    //Same as complexBean.getStudentList().get(0);
    Student std = (StudentBeanUtil.getProperty(complexBean, "studentList[0]");
    System.out.println(std);
    
    //Same as complexBean.getStudentList().get(0).getName();
    String str = (StringBeanUtil.getProperty(complexBean, "studentList[0].name");
    System.out.println(str);
    
    //Same as complexBean.getSubjectStudentMap().get("MATHS").get(1);
    std = (StudentBeanUtil.getProperty(complexBean, "subjectStudentMap[MATHS].*this[1]");
    System.out.println(std);
    
    //Same as complexBean.getSubjectStudentMap().get("MATHS").get(2).getName();
    str = (StringBeanUtil.getProperty(complexBean, "subjectStudentMap[MATHS].*this[2].name");
    System.out.println(str);
  }

}
   

It gives the following output,
Student[name = Sriram, age = 2, hobby = Chess]
Sriram
Student[name = Sudhakar, age = 29, hobby = Painting]
Charan



 
  


  
bl  br