JSF - Đậu được quản lý
Managed Bean là một lớp Java Bean thông thường được đăng ký với JSF. Nói cách khác, Managed Beans là một bean Java được quản lý bởi khuôn khổ JSF. Đậu được quản lý chứa các phương thức getter và setter, logic nghiệp vụ hoặc thậm chí là một đậu hỗ trợ (một bean chứa tất cả giá trị biểu mẫu HTML).
Đậu được quản lý hoạt động như Mô hình cho thành phần giao diện người dùng. Bean Managed có thể được truy cập từ trang JSF.
Trong JSF 1.2, bean được quản lý phải đăng ký nó trong tệp cấu hình JSF chẳng hạn như faceconfig.xml. TừJSF 2.0trở đi, các bean được quản lý có thể dễ dàng đăng ký bằng cách sử dụng chú thích. Cách tiếp cận này giữ đậu và đăng ký của nó ở một nơi, do đó nó trở nên dễ quản lý hơn.
Sử dụng cấu hình XML
<managed-bean>
<managed-bean-name>helloWorld</managed-bean-name>
<managed-bean-class>com.tutorialspoint.test.HelloWorld</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>message</managed-bean-name>
<managed-bean-class>com.tutorialspoint.test.Message</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
Sử dụng chú thích
@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
@ManagedProperty(value = "#{message}")
private Message message;
...
}
@ManagedBean Annotation
@ManagedBeanđánh dấu một bean là một bean được quản lý với tên được chỉ định trong thuộc tính name. Nếu thuộc tính name không được chỉ định, thì tên bean được quản lý sẽ mặc định là phần tên lớp của tên lớp đủ điều kiện. Trong trường hợp của chúng tôi, nó sẽ là helloWorld.
Một thuộc tính quan trọng khác là eager. Nếu háo hức = "true" thì bean được quản lý sẽ được tạo trước khi nó được yêu cầu lần đầu tiên, nếu không thì khởi tạo "lazy" được sử dụng trong đó bean sẽ chỉ được tạo khi nó được yêu cầu.
Chú thích phạm vi
Chú thích phạm vi đặt phạm vi mà bean được quản lý sẽ được đặt. Nếu phạm vi không được chỉ định, thì bean sẽ mặc định là phạm vi yêu cầu. Mỗi phạm vi được thảo luận ngắn gọn trong bảng sau.
S. không | Phạm vi & Mô tả |
---|---|
1 | @RequestScoped Bean tồn tại miễn là phản hồi yêu cầu HTTP còn tồn tại. Nó được tạo theo một yêu cầu HTTP và bị phá hủy khi phản hồi HTTP liên kết với yêu cầu HTTP kết thúc. |
2 | @NoneScoped Bean sống lâu như một đánh giá EL duy nhất. Nó được tạo ra khi đánh giá EL và bị hủy ngay sau khi đánh giá EL. |
3 | @ViewScoped Bean tồn tại miễn là người dùng đang tương tác với cùng một chế độ xem JSF trong cửa sổ / tab của trình duyệt. Nó được tạo theo một yêu cầu HTTP và bị phá hủy sau khi người dùng đăng lại một chế độ xem khác. |
4 | @SessionScoped Bean tồn tại miễn là phiên HTTP tồn tại. Nó được tạo theo yêu cầu HTTP đầu tiên liên quan đến bean này trong phiên và bị hủy khi phiên HTTP bị vô hiệu. |
5 | @ApplicationScoped Bean tồn tại miễn là ứng dụng web còn tồn tại. Nó được tạo theo yêu cầu HTTP đầu tiên liên quan đến bean này trong ứng dụng (hoặc khi ứng dụng web khởi động và thuộc tính háo hức = true được đặt trong @ManagedBean) và bị hủy khi ứng dụng web tắt. |
6 | @CustomScoped Bean tồn tại miễn là mục nhập của bean trong Bản đồ tùy chỉnh, được tạo cho phạm vi này tồn tại. |
@ManagedProperty Annotation
JSF là một khung công tác Injection Dependency Injection (DI) tĩnh đơn giản. Sử dụng@ManagedProperty chú thích, thuộc tính của bean được quản lý có thể được đưa vào một bean được quản lý khác.
Ứng dụng mẫu
Hãy để chúng tôi tạo một ứng dụng JSF thử nghiệm để kiểm tra các chú thích ở trên cho các bean được quản lý.
Bươc | Sự miêu tả |
---|---|
1 | Tạo một dự án với tên helloworld trong một gói com.tutorialspoint.test như được giải thích trong chương JSF - Tạo ứng dụng . |
2 | Sửa đổi HelloWorld.java như được giải thích bên dưới. Giữ phần còn lại của các tệp không thay đổi. |
3 | Tạo Message.java dưới một gói com.tutorialspoint.test như được giải thích dưới đây. |
4 | Biên dịch và chạy ứng dụng để đảm bảo logic nghiệp vụ đang hoạt động theo yêu cầu. |
5 | Cuối cùng, xây dựng ứng dụng dưới dạng tệp chiến tranh và triển khai nó trong Apache Tomcat Webserver. |
6 | Khởi chạy ứng dụng web của bạn bằng URL thích hợp như được giải thích bên dưới trong bước cuối cùng. |
HelloWorld.java
package com.tutorialspoint.test;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
@ManagedProperty(value = "#{message}")
private Message messageBean;
private String message;
public HelloWorld() {
System.out.println("HelloWorld started!");
}
public String getMessage() {
if(messageBean != null) {
message = messageBean.getMessage();
}
return message;
}
public void setMessageBean(Message message) {
this.messageBean = message;
}
}
Message.java
package com.tutorialspoint.test;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "message", eager = true)
@RequestScoped
public class Message {
private String message = "Hello World!";
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
home.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>JSF Tutorial!</title>
</head>
<body>
#{helloWorld.message}
</body>
</html>
Khi bạn đã sẵn sàng với tất cả các thay đổi được thực hiện, hãy để chúng tôi biên dịch và chạy ứng dụng như chúng tôi đã làm trong chương JSF - Tạo ứng dụng. Nếu mọi thứ đều ổn với ứng dụng của bạn, điều này sẽ tạo ra kết quả sau.