STACKJAVA

Series JSF – Phần 3: Managed Beans, Bean trong JSF, Các scope trong JSF

Series JSF – Phần 3: Managed Beans, Bean trong JSF, Các scope trong JSF

1. Managed Bean trong JSF

Managed Bean: là các Java Bean được đăng ký với JSF. Nói cách khác, Managed Bean là Java Bean quản lý bởi JSF Framework.

Managed bean thường thực hiện các chức năng chính sau:

 

Managed Bean có thể được truy cập từ JSF page.

Ví dụ: JSF Manage bean

public class User {
  private String name;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Có 2 cách để xử dụng bean:

Cách 1: Cấu hình managed bean bên trong file xml

<managed-bean>
  <managed-bean-name>user</managed-bean-name>
  <managed-bean-class>User</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

Cách 2: Dùng annotation.

@ManagedBean // Using ManagedBean annotation
@RequestScoped // Using Scope annotation
public class User {
  private String name;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Annotation @ManagedBean đánh dấu đây là bean được quản lý bởi JSF.

2. Các scope trong JSF

Khi nói tới Scope trong JSF có nghĩa là ta đang nói đến scope của các managed bean.

Trong JSF có 6 Scope cho các bean:

3. Eager Managed Bean

Mặc định các managed bean là lazy (chỉ được tạo khi có một request gửi đến)

Bạn có thể tạo thể hiện và đặt bean trong aplication scope ngay khi ứng dụng bắt đầu chạy.

ManagedBean(eager=true)

4. @ManagedProperty Annotation

JSF là một Framework Dependency Injection (DI) đơn giản. Với việc sử dụng annotation @ManagedProperty, giá trị của managed bean có thể được inject vào bên trong một bean khác.

Ví dụ:

@ManagedBean
public class UserService {

  public void login(User user) {
    // do something
  }
}

@ManagedBean // Using ManagedBean annotation
@RequestScoped // Using Scope annotation
public class User {
  private String name;
  
  @ManagedProperty
  UserService userService;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Ở trong Bean User ta có thể sử dụng bean UserService mà không cần khởi tạo.

 

Bài tiếp theo chúng ta sẽ tiến hành tạo một ứng dụng web bằng JSF