در JSF 2.0 می توان بجای استفاده در علامت dot برای فراخوانی Property ها از علامت [] استفاده نمود. به عنوان دستورات زیر با هم برابر میباشند :

#{beanName.propertyName}

#{beanName["propertyName"]}

#{beanName['propertyName']}

به سه دلیل می توان از براکت در دستورات Expression Language استفاده نمود :

  • هنگامی که میخواهید مقداری را از array یا map در صفحه JSF نشان دهید.
  • اگر میخواهید از یک عبارت رشته ای شامل dot در دستورات Expression Language استفاده نمائید، msgs[“label.username”].
  • با استفاده از علامت براکت می توان Property های دینامیک ایجاد نمود; bean1[bean2.property1]

 

مثال اول: فرض کنید دو کلاس Bean بنام های User و Address ایجاد کرده اید. کلاس User شامل اطلاعات کاربری و کلاس Address شامل اطلاعات آدرس محل سکونت آنها میباشد. با استفاده از دستور #{user[‘address’][‘city’]} میتوان به نام شهر محل سکونت کاربران مستقیما در صفحه JSF وارد نمود. کدهای این کلاس ها بصورت زیر میباشد:

 

@ManagedBean(name = "user")

@SessionScoped

public class UserBean implements Serializable {

    private String name = "";

 

    @ManagedProperty(value="#{address}")

    private AddressBean address;

 

    public String getName() {

        return name;

    }

    public void setName(String newValue) {

        name = newValue;

    }

    public AddressBean getAddress() {

        return address;

    }

    public void setAddress(AddressBean address) {

        this.address = address;

    }

}

 

@ManagedBean(name = "address")

@SessionScoped

public class AddressBean implements Serializable {

    private static final long serialVersionUID = 1L;

 

    private String city;

    public String getCity() {

        return city;

    }

    public void setCity(String city) {

        this.city = city;

    }

}

 

به کدهای کلاس UserBean توجه کنید. در این کلاس باید استفاده فیلدهای کلاس Address باید کلاس AddressBean را با استفاده از علامت  @ManagedProperty تزریق یا Inject نمائید.

 

نکته: متد setter برای فیلد آدرس باید حتما در کلاس UserBean تعریف گردد.

 

مثال دوم: اگر میخواهید مقدار ایندکس 5 از آرایه ی ListTest را از کلاس UserBean فراخوانی نمائید، می توانید از دستور #{userBean.listTest[5]} استفاده نمائید.