การใช้คำนำหน้าเป็นพารามิเตอร์ในการส่งต่อฟะ

มีวิธีใดบ้างที่ฉันสามารถใช้คำนำหน้าเป็นพารามิเตอร์หรือในเส้นทางของการส่งต่อเช่น:

<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>

person Community    schedule 06.02.2009    source แหล่งที่มา
comment
ทำไมคุณไม่ใช้แอตทริบิวต์คำขอหรือเซสชัน   -  person Fred    schedule 13.02.2009


คำตอบ (1)


ฉันไม่แน่ใจว่า 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 ใหม่ และวิธีรับชื่อของการส่งต่อและชื่อเซิร์ฟเล็ตที่ชี้ไป คุณไม่ควรมีปัญหาในการสร้างการส่งต่อที่คุณต้องการ

person Jorge Gajon    schedule 16.12.2009