การใช้ตารางข้อมูลใน JSF - โค้ดคลิก

แบ่งปัน

การใช้ตารางข้อมูลใน JSF

โฆษณา

ตัวอย่างตารางที่กำหนดไว้ล่วงหน้า
ในแล็บนี้ เราจะเห็นตัวอย่างง่ายๆ ที่แสดงวิธีใช้องค์ประกอบ DataTable องค์ประกอบนี้ช่วยให้เราเชื่อมโยงตารางข้อมูลกับหน้าของเราได้ดังนี้:

สำหรับตัวอย่างแรกนี้ เฉพาะคอมโพเนนต์ที่เติมข้อมูลล่วงหน้าแล้วเท่านั้นที่จะเชื่อมโยงจากคลาส bean ของเรา หลังจากนั้นจะแสดงวิธีจัดการข้อมูลแบบไดนามิก

เริ่มแรก มาสร้างโปรเจ็กต์ JSF ด้วยโครงสร้างต่อไปนี้:

ดังที่เราเห็น มีการสร้างคลาสจาวา 2 คลาส คลาสหนึ่งสอดคล้องกับคลาสบุคคลที่ช่วยให้เราประมวลผลผู้คนที่เราจะแสดงในตารางของเรา และอีกคลาสหนึ่งสำหรับ bean ที่จะช่วยให้เราจัดการตารางของเราตามลำดับ คอลัมน์และบันทึก
คลาส Person.java ให้ข้อมูลพื้นฐานของบุคคลที่เรากำลังจะแสดงในตาราง ที่นี่เราได้เพิ่มเมธอด set และ get ที่สอดคล้องกัน รวมถึงตัวสร้างพร้อมพารามิเตอร์เพื่อเติมข้อมูลผู้คนโดยตรง



คลาส TablaBean.java อ้างอิงถึงตารางและการจัดการบุคคลในนั้น บันทึกที่แสดงจะถูกจัดเก็บไว้ในประเภทบุคคล ArrayList ซึ่งตามวัตถุประสงค์ของคู่มือนี้ จะถูกเติมลงในตัวสร้าง


ใน index.xhtml เราสร้างองค์ประกอบ DataTable ซึ่งเราเชื่อมโยงรายชื่อบุคคลโดยตรงในค่าและในคอลัมน์ที่เกี่ยวข้องแอตทริบิวต์ของ bean ที่อ้างอิงใน var="data" โดย data เป็นองค์ประกอบที่แสดงถึงข้อมูลของ วัตถุบุคคลในแต่ละบรรทัดจากตาราง



เมื่อเรียกใช้เราจะได้สิ่งนี้


ดังที่เราเห็น ข้อมูลจะแสดงในโหมดตาราง เนื่องจากเรายังไม่ได้เชื่อมโยงสไตล์ CSS เราจึงชื่นชมเฉพาะโครงสร้างในแถวและคอลัมน์โดยไม่มีการออกแบบใดๆ อย่างไรก็ตาม เราสามารถเพิ่มคุณสมบัติ "เส้นขอบ" ลงในตารางได้ และระยะขอบที่มีสิ่งนี้:


ในที่สุดเราก็รู้ว่าเราสามารถใช้ประโยชน์จาก เพื่อนำเสนอข้อมูลอย่างมีแบบแผนมากขึ้น


ตัวอย่างการจัดการข้อมูลใน DataTable
ในส่วนนี้ เราจะดำเนินการต่อจากตัวอย่างก่อนหน้านี้ ซึ่งเราจะดูวิธีการจัดการข้อมูลตารางเพื่อดำเนินกระบวนการทั่วไป เช่น การลงทะเบียน การแก้ไข หรือการลบข้อมูล


เพิ่มคน
ในการลงทะเบียนบุคคล เราจะแก้ไขหน้า index.xhtml ของเรา ซึ่งเราจะเชื่อมโยงแบบฟอร์มการลงทะเบียนบุคคล เราทำสิ่งนี้โดยเชื่อมโยงส่วนประกอบอินพุตและการเลือกในแผงกริดที่เกี่ยวข้องอย่างถูกต้องกับอ็อบเจ็กต์ “myPerson” ที่ส่งข้อมูลต่างๆ ไปให้ บุคคลใหม่ได้รับการลงทะเบียนในระบบของเรา

ดังที่เราเห็นองค์ประกอบใหม่เหล่านี้ถูกเพิ่มก่อนที่ DataTable จะได้รับผลลัพธ์ดังนี้:

หลังจากแก้ไขดัชนีแล้ว มาทำการเปลี่ยนแปลงที่จำเป็นในคลาส TableBean.java เนื่องจากในตัวอย่างนี้ เราจะใช้ระดับขอบเขตเริ่มต้นต่อไป ดังนั้นเรามาสร้างรายชื่อบุคคลแบบคงที่เพื่อให้สามารถจัดการได้โดยไม่มีปัญหา เราจะเพิ่มเติม กำจัดการเติมรายการเนื่องจากแนวคิดคือสามารถลงทะเบียนผู้คนผ่านแบบฟอร์มการลงทะเบียน



ดังที่เราเห็นเมื่อกำหนดรายการเป็นสแตติก เราสร้างอินสแตนซ์ในระดับคลาส เราไม่ทำเช่นนี้ในคอนสตรัคเตอร์เนื่องจาก jsf ของเราจะถูกเรียกใช้ในโอกาสต่างๆ ซึ่งจะทำให้เกิดอินสแตนซ์ใหม่ของรายการ ซึ่งจะทำให้เกิด เราจะสูญเสียข้อมูลที่อาจมี

นอกจากนี้ เราได้เพิ่มวัตถุประเภทบุคคลเพื่อให้สามารถจัดการข้อมูลการลงทะเบียน และเพิ่มเมธอด “aggregarPersona()” ที่อนุญาตให้เพิ่มองค์ประกอบใหม่ในรายการและเรียกจากปุ่ม jsf หลังจากนั้นเราสร้างอินสแตนซ์ใหม่ของ วัตถุ "minhaPersona" ซึ่งจะช่วยให้การทำความสะอาดแบบฟอร์มการลงทะเบียน



เมื่อเรียกใช้ระบบเราจะเห็นพฤติกรรมต่อไปนี้:



ในขั้นต้นแบบฟอร์มว่างเปล่าและส่วนหัวของตารางของเราก็ปรากฏขึ้นเช่นกัน แต่ไม่มีเนื้อหาใด ๆ (โปรดจำไว้ว่าเราได้ตัดการเติมในรายการออก) ดังนั้นส่วนหัวจะไม่แสดงเมื่อยังไม่มีผู้ลงทะเบียน ดังนั้นเราจึงใช้ " แสดงผล” คุณสมบัติที่เราตรวจสอบว่าความยาวของรายการมากกว่าศูนย์ มิฉะนั้นก็ไม่ควรแสดงส่วนหัว (การดำเนินการของคุณสมบัตินี้จะกล่าวถึงในรายละเอียดในภายหลัง)

ขณะที่เราเพิ่มบุคคล พวกเขาจะถูกจัดเก็บไว้ในรายการและแสดงใน DataTable

ไม่รวมผู้คน
หลังจากที่เราลงทะเบียนบุคคลในรายการของเราสำเร็จแล้ว เราสามารถลบพวกเขาออกจากรายชื่อได้ สำหรับสิ่งนี้ เราจะเพิ่มคอลัมน์การดำเนินการใหม่ใน dataTable ของเรา ซึ่งจะมีลิงก์ไปยังวิธีการ “eliminarPerson()” ที่เราจะสร้างใน bean ของเรา


สำหรับสิ่งนี้ เราแก้ไข index.xhtml โดยที่หลังจากคอลัมน์ "เพศ" เราจะเพิ่มคอลัมน์ "การกระทำ"


อย่างที่เราเห็น เราใช้ส่วนประกอบ และในการดำเนินการ เราเรียกเมธอด "eliminarPersona()" ซึ่งเราจะส่งค่า "ข้อมูล" เป็นพารามิเตอร์ โดยจำไว้ว่าข้อมูลนั้นเทียบเท่ากับวัตถุของรายการที่แสดงในบรรทัดที่ระบุ

ต่อมาในคลาส TablaBean.java เราเพิ่มเมธอด “eliminarPersona()” ที่รับเป็นพารามิเตอร์ของวัตถุบุคคลที่เราต้องการลบ ซึ่งสอดคล้องกับ “ข้อมูล” ที่เราส่งจาก jsf และเทียบเท่ากับ บุคคลในบรรทัดที่เราต้องการลบ จึงลบออกจากรายการ

เมื่อรันระบบเราจะได้สิ่งต่อไปนี้:

และทุกครั้งที่เราลบบันทึกผ่านลิงก์ที่เกี่ยวข้อง ตารางจะได้รับการอัปเดต

แก้ไขคน
หลังจากลงทะเบียนและลบบุคคลออกจากรายการเรียบร้อยแล้ว เราสามารถแก้ไขได้ เพื่อที่เราจะแก้ไขตารางของเราทำให้สามารถแก้ไขได้เมื่อเราต้องการอัพเดทข้อมูลบางส่วน เพื่อที่เราจะใช้คุณสมบัติ "แสดงผล" อีกครั้งซึ่งจะแสดง หรือซ่อนตัวเลือกที่สามารถแก้ไขได้ขึ้นอยู่กับสิ่งที่ผู้ใช้ตัดสินใจ


ดังที่เราเห็นในแต่ละคอลัมน์ มีการเพิ่มส่วนประกอบ ซึ่งจะถูกซ่อนไว้ตามค่าเริ่มต้นด้วยคุณสมบัติ "แสดงผล" ที่อนุญาตให้จัดเก็บข้อมูลจริงหรือเท็จเพื่อแสดงหรือซ่อนส่วนประกอบที่เกี่ยวข้อง

ในกรณีของเรา “data.edit” ทำการเรียกตัวแปรบูลีน (แก้ไข) ที่เราเพิ่มในคลาส Person หากคุณสมบัติเป็นจริงก็จะแสดง เพื่อให้แก้ไขได้ แต่ถ้าคุณสมบัติเป็น จริง เท็จ (ไม่จริง) ก็จะแสดง


ต้องทำเช่นเดียวกันสำหรับคอลัมน์อาชีพ เงินเดือน และเพศตามลำดับ โดยที่แทนที่จะเพิ่ม a ที่หลังจะถูกเพิ่ม เนื่องจากในแบบฟอร์มเราใช้คำสั่งผสมการเลือกของเส้นทางต่อไปนี้:


ในทำนองเดียวกัน คุณสมบัติที่เรนเดอร์จะต้องแสดงคอมโบหรือแสดงป้ายกำกับแล้วแต่กรณี

ต่อจากนั้น คอลัมน์ "การดำเนินการ" ได้รับการแก้ไขโดยที่ก่อนหน้านี้เรามีเพียงลิงก์สำหรับ "ลบ" ตอนนี้เราจะเพิ่มอีก 2 ลิงก์ ลิงก์หนึ่งสำหรับ "แก้ไข" และอีกลิงก์หนึ่งสำหรับ "บันทึก" ข้อมูลหลังจากแก้ไขแล้ว



อย่างที่เราเห็น ตอนนี้มี 3 ลิงก์สำหรับการแก้ไข บันทึก และลบตามลำดับ อย่างไรก็ตาม แก้ไขและบันทึกมีคุณสมบัติการแสดงผลซึ่งทำให้มองเห็นได้เพียง 2 ใน 3 ลิงก์ต่อครั้ง (โปรดจำไว้ว่าลิงก์ที่แสดงผลมีค่าจริงหรือเท็จ ขึ้นอยู่กับเงื่อนไข ) ดังนั้นตามค่าเริ่มต้น ลิงก์ลบจะปรากฏเสมอเนื่องจากไม่มีคุณสมบัติการแสดงผล ในขณะที่แก้ไขและบันทึกจะไม่เห็นพร้อมกัน (อนุญาตให้คุณเพิ่มช่องว่างระหว่างลิงค์)

ภายในที่ระดับกราฟิก dataTable จะมีลักษณะดังนี้:


แม้ว่าคุณจะเห็นส่วนประกอบทั้งหมดในเชิงกราฟิก แต่สิ่งสำคัญคือต้องทำให้ชัดเจนว่าคุณสมบัติที่แสดงผลจะแสดงเฉพาะส่วนประกอบโดยขึ้นอยู่กับค่าจริงหรือเท็จในขณะนั้น

หลังจากแก้ไข index.xhtml แล้ว ก็ถึงเวลาแก้ไขคลาส Person.java ซึ่งเพิ่มคุณสมบัติ "แก้ไข" ที่ใช้โดยการแสดงผลที่กล่าวถึงข้างต้น


อย่างที่เราเห็น แอตทริบิวต์บูลีนใหม่เชื่อมโยงกับชุดที่เกี่ยวข้องและรับ นอกจากนี้ เพื่อให้พอดีกับโครงสร้างของแบบฝึกหัด เราได้เพิ่มคุณสมบัติให้กับตัวสร้างแบบกำหนดพารามิเตอร์ แม้ว่าจะไม่ได้ใช้งานอีกต่อไปแล้วในจุดนี้ของแบบฝึกหัด

ด้วยวิธีนี้ ทุกครั้งที่ rendered=”#{data.edit}” เสร็จใน index.xhtml ก็จะเรียกตัวแปรนี้ ซึ่งจะอนุญาตให้แสดงหรือซ่อนส่วนประกอบขึ้นอยู่กับกรณี


สุดท้าย และด้วยการแก้ไขก่อนหน้านี้ เราดำเนินการแก้ไขคลาส Bean ซึ่งเราต้องเพิ่มวิธีการที่เกี่ยวข้องสำหรับการลบและการบันทึกที่เรียกจากฟิลด์ "การดำเนินการ"


อย่างที่เราเห็น เมธอด editPersona() รับวัตถุบุคคล (จากการเรียก jsf เช่นเดียวกับที่ทำในเมธอดการลบ) และคุณสมบัติ "แก้ไข" ของเมธอดถูกแก้ไขโดยส่งค่าเป็น true ซึ่งจะทำให้บันทึกนี้ เพื่อซ่อน และแสดง และ เพื่อทำการเปลี่ยนแปลงที่ต้องการ

ในทางกลับกัน เมธอด savePersona() จะรับผิดชอบในการเปลี่ยนคุณสมบัติ "แก้ไข" แต่ละรายการของวัตถุทั้งหมดในรายการเป็นเท็จ เพื่อให้ dataTable ได้รับการกู้คืนด้วยค่าของคน ไม่ใช่องค์ประกอบที่แก้ไขได้


เมื่อรันระบบเราจะได้สิ่งต่อไปนี้:


และเมื่อกดแก้ไขระบบจะเปลี่ยนเป็น:

อย่างที่คุณเห็น เมื่อคลิกลิงก์แก้ไข ส่วนประกอบที่แก้ไขได้จะแสดงขึ้นโดยอัตโนมัติ ในขณะที่ส่วนที่แก้ไขไม่ได้จะถูกซ่อนไว้ ลิงก์แก้ไขก็หายไปเช่นเดียวกัน เพื่อหลีกทางให้กับลิงก์บันทึกตามที่อธิบายไว้ข้างต้น

และพร้อม!!!

ในบล็อกของฉันและบนช่องของฉัน ฉันได้แบ่งปันเนื้อหาเกี่ยวกับภาษาการเขียนโปรแกรมที่ยอดเยี่ยมนี้ คุณจะพบบทความมากมายและ วิดีโอตั้งแต่ต้นฉันแสดงวิธีดาวน์โหลดเครื่องมือที่จำเป็นเพื่อเริ่มเขียนโปรแกรม เราพัฒนามากขึ้นเรื่อย ๆ ผ่านแนวคิดพื้นฐาน ผ่าน แนวคิดการเขียนโปรแกรมเชิงวัตถุมาตรฐาน หัวข้อโครงสร้างข้อมูล การเข้าถึงฐานข้อมูล และอื่น ๆ ไปจนถึงการก่อสร้าง แอปพลิเคชั่นที่มีส่วนต่อประสานกับผู้ใช้.

นอกจากนี้คุณยังสามารถหา หลักสูตรตั้งแต่เริ่มต้นที่ฉันสอนวิธีสร้างแอพมือถือบน Android ผ่านลำดับวิดีโอทีละขั้นตอนที่อัปเดตอย่างต่อเนื่อง


และตอนนี้ฉันยังจะเริ่มลำดับตั้งแต่ต้นที่เราจะเข้าสู่โลกของจาวารุ่น Enterprise แสดงวิธีตั้งค่าสภาพแวดล้อมการพัฒนาและวิธีสร้างเว็บแอปพลิเคชันแรกของคุณด้วยจาวา


นั่นเป็นเหตุผลที่ฉันเชิญคุณไปที่ codejavu.blogspot.com เพื่อเยี่ยมชม ช่องของฉัน Cristian Henao และพวกเขาตระหนักดีถึงภาคต่อใหม่

นอกจากนี้ยังอาจสนใจคุณ

มีอะไรที่คุณต้องการเพิ่มหรือแสดงความคิดเห็นเกี่ยวกับรายการนี้หรือไม่? อย่าลังเลที่จะทำ….และถ้าคุณชอบ ฉันขอเชิญคุณแบ่งปัน วาย สมัครสมาชิกโดยคลิกที่ปุ่ม "เข้าร่วมไซต์นี้" เพื่อฟังโพสต์เพิ่มเติมเช่นนี้ 😉