Managed Beans คือ อะไร
Managed Beans ก็คือ java bean ที่ JSF จะนำมาใช้เป็นคลาสกลางที่เอาไว้เชื่อมต่อกับหน้าเว็บ
ซึ่งค่าจากตัวแปรใน Managed Beans ที่นำมาใช้กับหน้าเว็บ ก็คือ properties หรือตัวแปรที่ประกาศเอาไว้ในคลาส โดยจะต้องมี getter และ setter method เพื่อให้สามารถเรียกใช้ตัวแปรเหล่านี้ผ่านทางหน้าเว็บได้
ใน JSF 2 นี้ก่อนที่เราจะใช้งาน Managed Beans ได้เราจะต้องทำการตั้งค่าก่อน
โดยวิธีการที่เราจะทำได้นั้นมี 2 วิธี
1. ตั้งค่าผ่าน XML
2. ตั้งค่าโดยใช้ Annotation
ตัวอย่างการตั้งค่า
1. ตั้งค่าผ่าน XML
การตั้งค่าผ่าน XML นี้เราจะต้องไปตั้งค่าที่ไฟล์ที่ชื่อว่า faces-config.xml โดยตั้งค่าดังนี้
<managed-bean> <managed-bean-name>helloWorld</managed-bean-name> <managed-bean-class>com.learning.jsf2.HelloWorld</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>
- <managed-bean-class>com.learning.jsf2.HelloWorld</managed-bean-class> บรรทัดนี้เอาไว้บอกที่อยู่ของคลาส Managed Bean ซึ่งจะประกาศแบบเต็มๆโดยขึ้นต้นด้วยชื่อ package ก่อนแล้วตามด้วยชื่อคลาส
- <managed-bean-scope>request</managed-bean-scope> บรรทัดนี้จะบอก scope ของ Managed Bean
ซึ่งมีทั้งหมด 5 Scope ดังนี้ครับ
1. Application Scope - มีการประกาศ Scope ดังนี้ครับ
<managed-bean-scope>application</managed-bean-scope>
managed bean ที่ทำการประกาศ Scope แบบ Application จะถูกสร้างครั้งแรกเมื่อมี HTTP request เข้ามาเกี่ยวกับ bean นั้นๆ และจะถูกทำลายเมื่อมีการ shut down Web Application2. Session Scope - มีการประกาศ Scope ดังนี้ครับ
<managed-bean-scope>session</managed-bean-scope>
managed bean ที่ประกาศ Scope แบบ Session จะถูกสร้างขึ้นครั้งแรกเมื่อมี HTTP request ที่เกี่ยวข้องกับ bean นั้นๆใน Session และจะถูกทำลายเมื่อ session หมดเวลา หรือ session ถูกทำลาย หรือ session ไม่ถูกต้อง3. Request Scope - มีการประกาศ Scope ดังนี้ครับ
<managed-bean-scope>request</managed-bean-scope>
managed bean ที่ประกาศ Scope แบบ Request จะถูกสร้างขึ้นครั้งแรกเมื่อมี HTTP request ที่เกี่ยวข้องกับ bean นั้นๆ และจะถูกทำลายเมื่อ HTTP response ของ HTTP request ที่สร้าง bean นั้นๆ สิ้นสุดลง4. View Scope - มีการประกาศ Scope ดังนี้ครับ
<managed-bean-scope>view</managed-bean-scope>
managed bean ที่ประกาศ Scope แบบ View จะถูกสร้างขึ้นครั้งแรกเมื่อมี HTTP request ที่เกี่ยวข้องกับ bean นั้นๆ ซึ่งจะมีชีวิตอยู่ภายใน JSF ที่เป็น View เดียวกัน และจะถูกทำลายเมื่อเราใช้งาน View อื่นๆ5. None Scope - มีการประกาศ Scope ดังนี้ครับ
<managed-bean-scope>none</managed-bean-scope>
managed bean ที่ประกาศ Scope แบบ None จะถูกสร้างขึ้นครั้งแรกเมื่อมีการเรียกใช้ EL Expression เช่น #{helloBean.message} และจะถูกทำลายเมื่อการประมวลผล EL Expression สิ้นสุดลง2. การตั้งค่าโดยการใช้ Annotation
เราสามารถประกาศ Scope ของ Managed Bean แบบ Annotation ได้โดยการประกาศ
@ชื่อScope ประกาศไว้ที่หัวของ Class เช่น
@SessionScoped
public class testSessionScoped {
}
ซึ่งการประกาศแบบ Annotation นี้จะมีวิธีการประกาศอยู่ 6 วิธีด้วยกัน
1.2.
3.
4.
5. @NoneScoped
6. @CustomScoped
โดยการประกาศ 5 แบบแรกนั้นก็เหมือนที่ผมอธิบายเรื่องการประกาศแบบ xml เลยครับ
แต่จะมีแตกต่างที่ข้อ 6 ที่เป็น @CustomScoped ซึ่ง Bean ที่ประกาศโดยใช้ Scope แบบ Custom นี้จะมีชีวิตขึ้นอยู่กับ Custom map ที่เราได้ทำการ set เอาไว้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น