Managed Beans

Một phần của tài liệu isas quarter 7 frameworks (Trang 32 - 40)

- Định nghĩa

Bean một đối tượng có thuộc tính, có các phương thức. Bean phục vụ cho mục đích khác. Các đối tượng được tạo và được quản lý bên trong chương trình Java khi chương trình gọi các phương thức khởi tạo và các phương thức khác. Tuy nhiên bean có thể được cấu hình và được quản lý mà không cần lập trình.

Ví dụ: Ứng dụng login. UserManager được cấu hình trong faces-config.xml: <managed-bean> <managed-bean-name>usermanager</managed-bean-name> <managed-bean-class>enterprise.jsf_jpa_war.UserManager</managed- bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

Khi chương trình thực thi nó tao ra đối tượng của com.corejsf.UserBean, đặt tên là usermanager, và giữ nó tồn tại trong suốt session, để phục vụ cho tất cả các yêu cầu hình thành từ client.

Mỗi khi bean được định nghĩa, nó có thể được truy cập bởi các component của JSF. Ví dụ trường input này đọc và cập nhật thuộc tính password của bean usermanager.

<h:inputSecret value="#{user.password}"/> - Các thuộc tính của bean

Lớp bean cần theo quy ước lập trình để đưa ra các đặc tính mà các công cụ có thể sử dụng.

Property của Bean gồm nhiều thuộc tính: tên, kiểu dữ liệu và phương thức getter/setter cho giá trị thuộc tính.

Ví dụ:

private String username; public String getUsername() { return username;

}

public void setUsername(String username) { this.username = username;

}

- Value Binding Expressions

Nhiều component giao diện của JSF có thuộc tính value để bạn có thể xác định giá trị hoặc binding đến một giá trị được chứa trong thuộc tính của bean. Ví dụ, bạn có thể xác định giá trị trực tiếp:

<h:outputText value="Hello, World!"/> hoặc xác định value binding:

<h:outputText value="#{user.name}"/> b. Message Bundles

Khi cài đặt ứng dụng web, nên tập hợp tất cả các message vào trong một chỗ để dễ dàng xác định vị trí trong ứng dụng.

Ví dụ:

- Sử dụng messages.properties file để chứa tất cả message (nên đặt trong classpath), sau đó thêm element f:loadBundle vào trang JSF như sau:

<f:loadBundle basename="messages" var="msgs"/>

- Element này sẽ load các message trong bundle vào biến tên là msgs. Sử dụng như sau:

<h:outputText value="#{msgs.guessNext}"/>

- Bạn có thể có nhiều bundle cho từng vị trí, để thiết lập locale cho ứng dụng có ba lựa chọn sau:

Thêm thuộc tính locale vào element f:view: <f:view locale="de">

Thiết lập locale mặc định và được hỗ trợ trong WEB- INF/faces-config.xml. <faces-config> <application> <locale-config> <default-locale>en</default-locale> <supported-locale>de</supported-locale> </locale-config> </application> </faces-config>

Gọi phương thức setLocale của đối tượng UIViewRoot: UIViewRoot viewRoot =

FacesContext.getCurrentInstance().getViewRoot(); viewRoot.setLocale(new Locale("de"));

c. Backing Beans

- Thỉnh thoảng, thật sự hiệu quả khi thiết kế một bean chứa một vài hoặc tất cả các đối tượng component của web form. Và bean đó được gọi là backing bean cho web form:

public class QuizBean {

private UIOutput scoreComponent; private UIInput answerComponent; // PROPERTY: scoreComponent

public UIOutput getScoreComponent() { return scoreComponent;

}

public void setScoreComponent(UIOutput newValue) { scoreComponent = newValue;

}

// PROPERTY: answerComponent

public UIInput getAnswerComponent() { return answerComponent;

}

public void setAnswerComponent(UIInput newValue) { answerComponent = newValue;

} }

- Khi sử dụng backing bean, bạn cần gắn kết các component trên form với bean. Bạn có thể sử dụng thuộc tính binding cho mục đích này:

<h:outputText binding="#{quiz.scoreComponent}"/> d. Bean Scopes

- Request Scope: Phạm vi của request tồn tại ngắn, nó bắt đầu khi một HTTP request được submit và kết thúc khi response được gửi trở lại cho client.

Ghi chú: nếu một request là forward đến một request khác, tất cả các cặp name/value lưu trong request scope được mang đến request mới. Trái lại, nếu một request được redirect, dữ liệu của request sẽ bị mất. - Session scope

Session Scope beans được tạo ra và được lưu trữ thành các đối tượng trong session. Session sẽ tắt nếu ứng dụng web gọi phương thức invalidate trên đối tượng HttpSession hoặc nếu nó time out.

- Application Scope

Application scope giống như một session nhưng được tồn tại trong suốt khoảng thời gian của ứng dụng web(giống như một biến toàn cục), nó chỉ mất khi ứng dụng web đóng.

e. Configuring Beans

- Configuring Beans thường sử dụng file cấu hình là WEB-

INF/faces-config.xml. Tuy nhiên cũng có thể cấu hình thông tin trong file cấu hình sau:

File tên là META-INF/faces-config.xml. Danh sách các file trong tham số

javax.faces.CONFIG_FILES bên trong WEB- INF/web.xml. Ví dụ như: <web-app> <context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value>WEB-INF/navigation.xml,WEB- INF/beans.xml</param-value> </context-param> ... </web-app>

- Một bean được định nghĩa bằng element managed-bean bên trong element faces-config. Bạn có thể xác định tên, lớp và scope của bean.

<faces-config> <managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class>com.corejsf.UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config>

- Scope có thể là request, session, application hoặc none. Scope none có nghĩa là đối tượng không được giữ trong 1 trong 3 scope.

Thiết lập giá trị thuộc tính <managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class>com.corejsf.UserBean</managed-bean- class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>name</property-name> <value>me</value> </managed-property> <managed-property> <property-name>password</property-name> <value>secret</value> </managed-property> </managed-bean>

Khi bean user lần đầu tiên được tìm kiếm, nó được khởi tạo bằng phương thức khởi tạo mặc định UserBean(). Sau đó các phương thức setName và setPassword sẽ được thực thi.

Để khởi tạo một thuộc tính bằng null, hãy sử dụng element null-value. Ví dụ: <managed-property> <property-name>password</property-name> <null-value/> </managed-property> Khởi tạo List và Map:

Có thể sử dụng element list-entries và map-entries để khởi tạo bean hoặc property có kiểu List hoặc Map.

<list-entries> <value-class>java.lang.Integer</value.class> <value>3</value> <value>1</value> <value>4</value> <value>1</value> <value>5</value> </list-entries>

o Map entries: Bạn có thể chọn giữa key-class và value-class (mặc định là java.lang.String). Sau đó bạn cung cấp một chuỗi element map-entry, mỗi element có một element key, theo sau bởi element value hoặc null-value.

<map-entries> <key-class>java.lang.Integer</key-class> <map-entry> <key>1</key> <value>George Washington</value> </map-entry> <map-entry> <key>3</key> <value>Thomas Jefferson</value> </map-entry> <map-entry> <key>16</key> <value>Abraham Lincoln</value> </map-entry> <map-entry> <key>26</key> <value>Theodore Roosevelt</value> </map-entry> </map-entries>

PHẦN IV: JFX

V. Giới thiệu

VI. Những đặc điểm nổi bật của JavaFX VII. JavaFX Platform Components

I. Giới thiệu

- JavaFX là một nền tảng được phát triển cho việc xây dựng các ứng dụng và cung cấp nội dung cho người dùng đầu cuối.Với thiết kế cho phép dễ dàng xây dựng và triển khai các rich internet applications (RIAs) cùng với thành phần media

khác,nền tảng JavaFX đảm bảo rằng giao diện và chức năng của các RIAs sẽ phù hợp trên các môi trường luôn thay đổi. - JavaFX 1.0 được giới thiệu ngày 4/12/2008.Và đến 1/1/2009 đã

có hơn 100,000 lượt download các công cụ và SDK.Hiện nay JavaFX đã có trên hơn 50 triệu máy tính.

- JavaFX tương thích hoàn toàn với Java Runtime và có được ưu thế về khả thực thi và tính phổ biến của Sun's Java Runtime Environment(hiện đã được cài đặt trên hành tỉ thiết bị trên toàn thế giới).Thêm vào đó JavaFX sẽ thúc đẩy năng suất làm việc và sự cộng giữa các nhà phát triển ứng dụng và đội ngũ thiết kế đồ họa.

Một phần của tài liệu isas quarter 7 frameworks (Trang 32 - 40)

Tải bản đầy đủ (PDF)

(75 trang)