อย่างที่เราทราบกันดีว่าคลาสแอ็คชั่นของ Strut2 สามารถรับค่าที่เกี่ยวข้องทั้งหมดผ่านแอตทริบิวต์เช่นพารามิเตอร์การร้องขอพารามิเตอร์การกำหนดค่าการดำเนินการผ่านค่าแอตทริบิวต์ไปยังการกระทำอื่น ๆ (ผ่านผลลัพธ์ห่วงโซ่) ฯลฯ เพื่อให้ได้ค่าพารามิเตอร์เหล่านี้สิ่งเดียวที่เราต้องทำคือประกาศคุณสมบัติที่มีชื่อเดียวกัน ก่อนที่ Struts2 จะเรียกใช้วิธีการดำเนินการของคลาสการกระทำ (ค่าเริ่มต้นคือวิธีการดำเนินการ) จะมีการกำหนดคุณสมบัติการกระทำที่สอดคล้องกัน
ในการทำฟังก์ชั่นนี้ให้เสร็จสมบูรณ์ struts2 ขึ้นอยู่กับวัตถุ Valuestack ในระดับใหญ่ วัตถุนี้ทำงานผ่านวงจรชีวิตทั้งหมดของการกระทำ (แต่ละวัตถุอินสแตนซ์ของคลาสแอ็คชั่นจะมีวัตถุ Valuestack) เมื่อ struts2 ได้รับคำขอ. การกระทำมันจะสร้างอินสแตนซ์ของวัตถุคลาสการกระทำก่อน แต่จะไม่เรียกวิธีการกระทำ แต่จะวางคุณสมบัติที่สอดคล้องกันของคลาสการกระทำบนโหนดระดับบนสุดของวัตถุ Valuestack (วัตถุ Valuestack เทียบเท่ากับสแต็ก) เป็นเพียงว่าค่าแอตทริบิวต์ทั้งหมดเป็นค่าเริ่มต้นเช่นค่าแอตทริบิวต์ของประเภทสตริงคือ null ค่าแอตทริบิวต์ของประเภท int คือ 0 ฯลฯ
หลังจากประมวลผลงานข้างต้น struts2 จะเรียกตัวดักจับในห่วงโซ่การดักจับ หลังจากเรียกตัวดักจับทั้งหมดวิธีการดำเนินการของคลาสแอ็คชั่นจะถูกเรียก ก่อนที่จะเรียกใช้วิธีการดำเนินการค่าแอตทริบิวต์ในโหนดระดับบนสุดของวัตถุ Valuestack จะถูกกำหนดให้กับแอตทริบิวต์ที่เกี่ยวข้องในคลาสการกระทำ ทุกคนควรให้ความสนใจสิ่งนี้ทำให้เรามีความยืดหยุ่นมาก กล่าวคือในระหว่างกระบวนการของ struts2 ที่เรียกว่า interceptor ค่าของแอตทริบิวต์ในวัตถุ Valuestack สามารถเปลี่ยนแปลงได้ เมื่อมีการเปลี่ยนแปลงค่าแอตทริบิวต์ที่แน่นอนค่าแอตทริบิวต์ที่สอดคล้องกันของคลาสการกระทำจะกลายเป็นค่าของการเปลี่ยนแปลงครั้งสุดท้ายของแอตทริบิวต์ใน interceptor
จากคำอธิบายข้างต้นเป็นเรื่องง่ายที่จะรู้ว่าในคลาสแอ็คชั่นของ struts2 คุณสามารถรับค่าพารามิเตอร์ที่มีชื่อเดียวกับแอตทริบิวต์ซึ่งจัดการโดยตัวดักจับที่แตกต่างกัน ตัวอย่างเช่นตัวดักจับที่ได้รับพารามิเตอร์การร้องขอคือพารามิเตอร์และตัวดักจับที่ได้รับพารามิเตอร์การกำหนดค่าของการกระทำคือสแตติกพาราอัม ฯลฯ อ่านค่าที่สอดคล้องกันภายในตัวดักจับเหล่านี้และปรับปรุงค่าของคุณสมบัติที่สอดคล้องกันของโหนดระดับบนสุดของวัตถุ วัตถุ Valuestack เป็นเหมือนสายพานลำเลียงผ่านค่าแอตทริบิวต์จาก interceptor หนึ่งไปยังตัวดักจับอื่น (แน่นอนในช่วงเวลานี้ค่าแอตทริบิวต์อาจเปลี่ยนไป) และในที่สุดก็ส่งผ่านไปยังวัตถุแอ็คชั่น
เมื่อเราใช้ EL Expressions ในเลเยอร์การแสดงผลเราไม่เพียง แต่สามารถเข้าถึงคุณสมบัติในวัตถุที่ซ่อนอยู่ 11 ตัวในนิพจน์ EL แต่ยังเข้าถึงค่าคุณสมบัติวัตถุใน Valuestack เนื่องจาก Struts2 ห่อหุ้ม HttpservletRequest เพิ่มเติม
ระดับสาธารณะ strutsrequestwrapper ขยาย httpservletrequestwrapper {public strutsrequestwrapper (httpservletrequest req) {super (req);} วัตถุสาธารณะ getattribute (สตริง s) {...... actioncontext ctx = actioncontext.get (ctx! = null) {if (attribute == null) {// หากไม่พบค่าแอตทริบิวต์จากช่วงคำขอนั่นคือค่าแอตทริบิวต์ของวัตถุพบได้จาก valuestack ... Valuestack stack = ctx.getValuestack () Valuestack ... }} return attribute;}}สรุป
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้เกี่ยวกับวิธีการที่ Strut2 ห่อหุ้มพารามิเตอร์การร้องขอและฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!