บทความนี้ส่วนใหญ่ศึกษาคำอธิบายโดยละเอียดของปุ่มตัวเลือกของกรอบ Struts2 และตัวอย่างที่เกี่ยวข้องของการแปลงประเภทการแจงนับดังต่อไปนี้
การใช้แท็ก struts2 ไม่ต้องสงสัยเลยว่าคุณต้องแนะนำไลบรารีแท็กก่อน:
<%@ taglib prefix = "s" uri = "/struts-tags"%>
สมมติว่าค่าของรายการในกล่องวิทยุวิทยุเป็นคอลเลกชันแผนที่:
<s: รายการวิทยุ = "#{'man': 'ชาย', 'ผู้หญิง': 'หญิง'}" name = "เพศ" listkey = "key" listValue = "value" value = "'man'" ธีม = "ง่าย"/>> บันทึก:
1. แอตทริบิวต์ชื่อยังเป็นแอตทริบิวต์ชื่อที่สอดคล้องกับรหัส HTML
2. แอตทริบิวต์ ListKey สอดคล้องกับแอตทริบิวต์ค่าของรหัส HTML
3. แอตทริบิวต์ ListValue สอดคล้องกับแอตทริบิวต์ป้ายกำกับรหัส HTML
4. แอตทริบิวต์ค่าหมายถึง: เมื่อค่าของค่าตรงกับค่าในชุดจะถูกเลือก (หากค่าของค่าเป็นสตริงคุณต้องเพิ่มใบเสนอราคาเดียว)
หลังจากดำเนินการแล้วมันจะถูกแยกวิเคราะห์เป็นรหัส HTML ดังที่แสดงในรูป:
เรามาอธิบายผ่านกรณี:
เมื่อแก้ไขผู้ใช้ให้ข้ามไปที่อินเทอร์เฟซการปรับเปลี่ยนและสะท้อนเพศของผู้ใช้ในอินเทอร์เฟซการปรับเปลี่ยน ที่นี่เราใช้การแจงนับเพื่อเป็นตัวแทนของเพศ
อินเทอร์เฟซผู้ใช้เริ่มต้น:
โครงสร้างโครงการ:
ส่วนต่อประสานผู้ใช้:
<body> <form action = "enumaction_test.action" method = "post"> โปรดเลือกเพศ: <s: รายการวิทยุ = "#{'ผู้ชาย': 'ชาย', 'ผู้หญิง': 'หญิง'}" name = "เพศ" listKey = "key" listValue = "value" value = "'man'"รหัสการดำเนินการพื้นหลัง:
การแสดงระดับสาธารณะ enumaction {/*กำหนดเพศค่าเริ่มต้นคือเพศชาย*/เพศส่วนตัวเพศ = เพศชาย; เพศสาธารณะ getGender () {กลับเพศ;} โมฆะสาธารณะ setGender (เพศเพศ) {this.gender = เพศ;}/*วิธีการทดสอบ*/การทดสอบสตริงสาธารณะ () หมายเหตุ: เนื่องจากเราใช้ประเภท enum เราจำเป็นต้องทำการแปลงประเภท (วิธีการแปลงเฉพาะถูกกล่าวถึงในบล็อกก่อนหน้า)
ระบุรหัสคลาสการแปลงประเภท:
คลาสสาธารณะ enumtypeconverter ขยาย defaultTypeconverter {@suppresswarnings ("rawtypes") @Override วัตถุสาธารณะ convertValue (แผนที่ <สตริงวัตถุ> บริบทค่าวัตถุ totype คลาส) {/*แปลงจากด้านหน้าไปยังแบ็กเอนด์ = (สตริง []) ค่า; ส่งคืนเพศ valueof (params [0]);} อื่นถ้า (totype == string.class) {/*ส่งผ่านจากการกระทำพื้นหลังไปเบื้องหน้านั่นคือการแปลงประเภทเพศเป็น string ประเภท*//*กำหนดไฟล์คุณสมบัติสำหรับการแปลงประเภททั่วโลก:
com.lixue.bean.gender = com.lixue.converter.enumtypeconverter
หน้าผลลัพธ์หลังจากกระโดด (อินเทอร์เฟซการดัดแปลงผู้ใช้):
<body> เพศของคุณ: <s: รายการวิทยุ = "#{'man': 'ชาย', 'ผู้หญิง': 'หญิง'}" name = "เพศ" listkey = "key" listValue = "value" value = "gender" ธีม = "simple"/> </body>หมายเหตุ: วิธีสะท้อนเพศที่เลือกในปัจจุบันในอินเทอร์เฟซการปรับเปลี่ยน? กุญแจสำคัญคือดูค่าค่า ฉันเขียนเพศในรหัสข้างต้น ในความเป็นจริงเพศนี้เป็นคุณสมบัติที่กำหนดไว้ในการกระทำ เมื่อเราพูดคุยเกี่ยวกับ OGNL ในบทความก่อนหน้านี้เรากล่าวว่าคุณสมบัติในการดำเนินการจะถูกบันทึกไว้ในสแต็กมูลค่า เราใช้คุณสมบัติในสแต็กค่าและสามารถรับได้โดยตรงผ่านชื่อแอตทริบิวต์โดยไม่ได้รับผ่านรูปแบบของ #Namespace หลังจากได้รับมันให้จับคู่กับคอลเลกชันแผนที่ก่อนหน้าเพื่อตรวจสอบว่าจะตรวจสอบหรือไม่
1. บางคนอาจมีคำถามทำไม ListKey สามารถเขียนได้โดยตรงบนคีย์และ ListValue จะถูกเขียนโดยตรงตามมูลค่า
คำตอบ: เมื่อ struts2 แยกวิเคราะห์รายการคอลเลกชันในแท็ก <s: วิทยุ> จะใช้ตัววนซ้ำ ฟังก์ชั่นของตัววนซ้ำคือการบันทึกผลลัพธ์ (ทุกครั้งที่วัตถุรายการ) ที่ด้านบนของสแต็กของสแต็กค่าทุกครั้งที่ลูปจะได้รับค่า ดังนั้นเมื่อใช้นิพจน์ OGNL คุณสามารถใช้แอตทริบิวต์ของวัตถุโดยตรง (ชื่อแอตทริบิวต์ของรายการคือคีย์และค่า) เพื่อรับค่า ไม่จำเป็นต้องใช้ # namespace นักเรียนที่ไม่เข้าใจการแสดงออกของ OGNL สามารถอ่านบทความก่อนหน้านี้ได้
2. เราจะพบว่าเมื่อเขียนแท็กเรามักจะเขียนธีมแอตทริบิวต์ ฟังก์ชั่นของแอตทริบิวต์นี้คือการหลีกเลี่ยง struts2 สร้างรหัสที่ไม่จำเป็นบางอย่างเมื่อแยกวิเคราะห์แท็ก แต่จำเป็นต้องเขียนทุกครั้ง มันไม่ใช่การหลอกลวง? ในความเป็นจริงเราสามารถกำหนดค่าคงที่ในไฟล์ struts.xml เพื่อให้ได้เอฟเฟกต์:
<!-รูปแบบธีมแท็ก struts2-> <constant name = "struts.ui.theme" value = "simple" />
การเรียนรู้กรอบการทำงานของเสาเหล่านี้ค่อนข้างเหมือนกับการเห็นท้องฟ้าสีฟ้าผ่านเมฆและหมอก ฉันมีความเข้าใจที่ชัดเจนยิ่งขึ้นเกี่ยวกับกรอบ Java, Spring, Mybatis ฯลฯ และทุกสิ่งเชื่อมโยงกัน - -
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับคำอธิบายโดยละเอียดของปุ่มตัวเลือก Struts2 และตัวอย่างรหัสการแปลงของประเภทการแจงนับ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!