มีวิธีใดบ้างที่ฉันสามารถใช้คำนำหน้าเป็นพารามิเตอร์หรือในเส้นทางของการส่งต่อเช่น:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
มีวิธีใดบ้างที่ฉันสามารถใช้คำนำหน้าเป็นพารามิเตอร์หรือในเส้นทางของการส่งต่อเช่น:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
ฉันไม่แน่ใจว่า prefix
หมายถึงอะไร ฉันคิดว่าคุณกำลังหมายถึงชื่อของเซิร์ฟเล็ต สมมติว่าคุณมี ไปข้างหน้า นี้ใน struts-config.xml
ของคุณซึ่งเป็นส่วนหนึ่งของการแมป action
:
<forward name="test" path="/switch" />
หากคุณต้องการได้รับชื่อ ส่งต่อ' ที่พร้อมสำหรับการดำเนินการของคุณ คุณสามารถรับได้ด้วย mapping.findForwards()
หากคุณมี forward
อยู่แล้ว เช่น:
ActionForward forward = mapping.findForward("test");
คุณสามารถรับชื่อกองหน้าด้วย:
String fwdName = forward.getName(); // returns "test"
และชื่อเซิร์ฟเล็ตหรือพาธด้วย:
String servletPath = forward.getPath(); // returns "/switch.do"
คุณสามารถรับได้จากวัตถุ request
:
String servletPath = request.getServletPath();
ตกลง ตอนนี้ หากคุณต้องการแก้ไขการส่งต่อก่อนที่จะส่งคืนการควบคุมไปยัง Struts เพื่อให้คุณสามารถผนวกพารามิเตอร์เพิ่มเติมได้ คุณจะต้องสร้าง ActionForward
ใหม่โดยยึดตามการส่งต่อตัวใดตัวหนึ่งที่กำหนดไว้ใน struts-config.xml
ของคุณ เช่น:
ActionForward forward = mapping.findForward("test");
StringBuilder path = new StringBuilder(forward.getPath());
path.append("?id=");
path.append(someobject.getId());
return new ActionForward(path.toString(), true); // `true` means "do a redirect"
สิ่งนี้จะบอกให้ Struts ออกการเปลี่ยนเส้นทางไปยัง URL เช่น /switch.do?id=3
เมื่อรู้วิธีสร้าง ActionForward
ใหม่ และวิธีรับชื่อของการส่งต่อและชื่อเซิร์ฟเล็ตที่ชี้ไป คุณไม่ควรมีปัญหาในการสร้างการส่งต่อที่คุณต้องการ