การประมวลผลที่ส่งไปยังเซิร์ฟเวอร์มักจะแบ่งออกเป็นสองขั้นตอน แบบสอบถามขั้นตอนแรกสถานะเซิร์ฟเวอร์ (แบบสอบถามหรืออัปเดตฐานข้อมูล) และขั้นตอนที่สองเลือกหน้าผลลัพธ์ที่เหมาะสมและส่งกลับไปยังผู้ใช้ (เนื้อหาของผลลัพธ์ที่จะกล่าวถึงที่นี่)
struts2 ให้การสนับสนุนสำหรับผลลัพธ์การส่งคืนชนิดต่าง ๆ ทั่วไป ได้แก่ JSP, Freemarker, Velocity ฯลฯ
ผลการส่งคืนประเภทต่าง ๆ ที่สนับสนุนโดย struts2 คือ:
| ชื่อ | อธิบาย |
|---|---|
| ผลโซ่ | ใช้ในการจัดการห่วงโซ่การกระทำ |
| ผลลัพธ์ของผู้ส่ง | ใช้ในการเปลี่ยนเป็นหน้ามักจะจัดการ JSP |
| ผลการเรียนรู้ | จัดการเทมเพลต freemarker |
| ผลลัพธ์ httpheader | ใช้ในการควบคุมพฤติกรรม HTTP พิเศษ |
| เปลี่ยนผล | เปลี่ยนเส้นทางไปยัง URL |
| เปลี่ยนผลการดำเนินการ | เปลี่ยนเส้นทางไปสู่การกระทำ |
| สตรีมผลลัพธ์ | ส่งวัตถุอินพุตสมอนด์ไปยังเบราว์เซอร์โดยปกติจะใช้ในการประมวลผลการดาวน์โหลดไฟล์ |
| ผลลัพธ์ความเร็ว | จัดการเทมเพลตความเร็ว |
| ผลลัพธ์ XLS | ประมวลผลเทมเพลต XML/XLST |
| ผลลัพธ์ข้อความธรรมดา | แสดงเนื้อหาไฟล์ต้นฉบับเช่นซอร์สโค้ดไฟล์ |
| S2Plugins: ผลลัพธ์กระเบื้อง | ใช้ร่วมกับกระเบื้อง |
นอกจากนี้ประเภทผลลัพธ์ของบุคคลที่สามยังรวมถึงปลั๊กอิน JasperReports ซึ่งใช้เป็นพิเศษในการประมวลผลเอาต์พุตรายงานของประเภท JasperReport
มีคำจำกัดความสำหรับผลลัพธ์ทุกประเภทในไฟล์ struts-default.xml:
<result-types> <result-type name = "chain" class = "com.opensymphony.xwork2.actionchainresult"/> <name-type name = "dispatcher" class = "org.apache.struts2.dispatcher.servletDispatcherresult name = "freemarker" class = "org.apache.struts2.views.freeMarker.freeMarkerresult"/> <ชื่อประเภท result-type = "httpheader" class = "org.pache.structs2.dispatcher.httpheaderresult" name = "redirect" class = "org.apache.structs2.dispatcher.servletredirectresult"/> <name-type name = "redirectaction" class = "org.apache.structs2.dispatcher.servletactionrectresult"/> < name = "stream" class = "org.apache.structs2.dispatcher.streamresult"/> <name-type name = "velocity" class = "org.apache.struts2.dispatcher.velocityResult" name = "xslt" class = "org.apache.struts2.views.xslt.xsltresult" /> <name-type name = "plaintext" class = "org.apache.struts2.dispatcher.plaintextresult" /> <! ดู WW-1707-> <result-type name = "redirect-action" class = "org.apache.structs2.dispatcher.servletactionredirectresult"/> <result-type name = "plaintext" class = "org.apache.struts2.dispatcher.plainte
จากรหัสด้านบนเราจะเห็นว่าเมื่อไม่ได้ระบุประเภทผลลัพธ์จะใช้
กำหนดค่าผลลัพธ์
<name result = "success" type = "dispatcher"> <param name = "location">/thareyou.jsp </param> </results>
เนื่องจากค่าเริ่มต้นของประเภทคือ dispatcher จึงไม่จำเป็นต้องกำหนดที่นี่ นอกจากนี้ค่าเริ่มต้นของชื่อคือความสำเร็จดังนั้นจึงไม่จำเป็นต้องกำหนดที่นี่
รหัสข้างต้นสามารถย่อได้เป็น:
<result> <param name = "location">/thareyou.jsp </param> </result>
นอกจากนี้พารามิเตอร์ตำแหน่งยังสามารถถอนการติดตั้งโดยตรงจากแท็กผลลัพธ์ดังนั้นวิธีที่ง่ายที่สุดในการเขียนโค้ดด้านบนคือ:
<result> /thankyou.jsp </results>
นอกจากนี้เรายังสามารถกำหนดผลลัพธ์ที่แตกต่างกันหลายอย่าง
<action name = "hello"> <result> /hello/result.jsp </result> <name result = "ข้อผิดพลาด">/hello/orler.jsp </result> <result name = "input">/hello/input.jsp </results> </action>
ความหมายของรหัสข้างต้นคือการกระทำที่มีชื่อ Hello มีสามคืนและพวกเขาทั้งหมดเป็นประเภท dispatcher (ประเภทเริ่มต้น) ชื่อของค่าส่งคืนทั้งสามนี้คือความสำเร็จ (ค่าเริ่มต้น) ข้อผิดพลาดและอินพุต พา ธ หน้าที่สอดคล้องกันคือ /hello/result.jsp, /hello/error.jsp และ /hello/input.jsp
บางครั้งเราต้องการผลลัพธ์ระดับโลกที่กำหนดไว้ ในเวลานี้เราสามารถกำหนดผลลัพธ์ทั่วโลกภายในแพ็คเกจตัวอย่างเช่น:
<global-results> <name result = "ข้อผิดพลาด">/error.jsp </result> <ชื่อผลลัพธ์ = "invalid.token">/orror.jsp </result> <name result = "login" type = "redirect-action"> logon! input </result>
ส่งคืนผลลัพธ์แบบไดนามิก
บางครั้งเรารู้เพียงว่าผลลัพธ์ใดที่จะส่งคืนเมื่อการกระทำดำเนินการ BI ที่สมบูรณ์ ในเวลานี้เราสามารถกำหนดคุณสมบัติภายในการกระทำซึ่งใช้เพื่อจัดเก็บค่าผลลัพธ์หลังจากการดำเนินการดำเนินการ BI ที่สมบูรณ์เช่น:
สตริงส่วนตัว NextAction; สตริงสาธารณะ getNextAction () {return nextAction;} ในไฟล์การกำหนดค่า strutx.xml เราสามารถใช้ $ {nextaction} เพื่ออ้างอิงคุณสมบัติในการดำเนินการและส่งคืนผลลัพธ์ผ่านเนื้อหาที่แสดงโดย $ {nextaction} ตัวอย่างเช่น:
<action name = "fragment"> <name result = "next" type = "redirect-action"> $ {nextAction} </result> </action> เมื่อวิธีการดำเนินการของการกระทำข้างต้นส่งคืนถัดไปมันก็จำเป็นที่จะต้องพิจารณาว่าการกระทำใดที่อยู่บนพื้นฐานของคุณสมบัติของ NextAction
หากคุณต้องการส่งต่อไปยังการกระทำอื่นคุณสามารถตั้งค่า type = chain และผลลัพธ์จะไม่ถูกเพิ่มลงใน shtml
ข้างต้นเป็นคำอธิบายโดยละเอียดทั้งหมดของพารามิเตอร์ผลลัพธ์ struts2 ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น