ขอคำอธิบายสั้น ๆ และตัวอย่างการใช้งาน@PathVariable
สปริง mvc ได้ไหม โปรดระบุว่าคุณพิมพ์ url อย่างไร?
ฉันกำลังดิ้นรนเพื่อให้ได้ url ที่ถูกต้องเพื่อแสดงหน้า jsp ขอบคุณ
ขอคำอธิบายสั้น ๆ และตัวอย่างการใช้งาน@PathVariable
สปริง mvc ได้ไหม โปรดระบุว่าคุณพิมพ์ url อย่างไร?
ฉันกำลังดิ้นรนเพื่อให้ได้ url ที่ถูกต้องเพื่อแสดงหน้า jsp ขอบคุณ
คำตอบ:
สมมติว่าคุณต้องการเขียน url เพื่อเรียกคำสั่งซื้อคุณสามารถพูดได้
www.mydomain.com/order/123
โดยที่ 123 คือ orderId
ตอนนี้ url ที่คุณจะใช้ใน spring mvc controller จะมีลักษณะดังนี้
/order/{orderId}
ตอนนี้รหัสคำสั่งซื้อสามารถประกาศตัวแปรเส้นทางได้
@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}
หากคุณใช้ url www.mydomain.com/order/123 ตัวแปร orderId จะถูกเติมด้วยค่า 123 ตามสปริง
โปรดทราบว่า PathVariable แตกต่างจาก requestParam เนื่องจาก pathVariable เป็นส่วนหนึ่งของ URL URL เดียวกันที่ใช้พารามิเตอร์คำขอจะมีลักษณะดังนี้ www.mydomain.com/order?orderId=123
ดูข้อมูลโค้ดด้านล่าง
@RequestMapping(value="/Add/{type}")
public ModelAndView addForm(@PathVariable String type ){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("addContent");
modelAndView.addObject("typelist",contentPropertyDAO.getType() );
modelAndView.addObject("property",contentPropertyDAO.get(type,0) );
return modelAndView;
}
หวังว่าจะช่วยในการสร้างโค้ดของคุณ
หากคุณมี url ที่มีตัวแปรพา ธ ตัวอย่างเช่น www.myexampl.com/item/12/update โดยที่ 12 คือ id และ create คือตัวแปรที่คุณต้องการใช้สำหรับระบุการดำเนินการของคุณสำหรับอินสแตนซ์โดยใช้รูปแบบเดียวเพื่อทำการอัพเดตและ สร้างคุณทำสิ่งนี้ในคอนโทรลเลอร์ของคุณ
@PostMapping(value = "/item/{id}/{method}")
public String getForm(@PathVariable("id") String itemId ,
@PathVariable("method") String methodCall , Model model){
if(methodCall.equals("create")){
//logic
}
if(methodCall.equals("update")){
//logic
}
return "path to your form";
}
@PathVariable
ใช้เพื่อดึงค่าจาก URL
ตัวอย่างเช่นหากต้องการทราบคำถาม
www.stackoverflow.com/questions/19803731
ต่อไปid
นี้คำถามบางส่วนจะถูกส่งเป็นพารามิเตอร์ใน URL
ตอนนี้ในการดึงค่านี้จากcontroller
สิ่งที่คุณต้องทำก็เพียงแค่ส่ง @PathVariable ในพารามิเตอร์วิธีการ
@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
public String getQuestion(@PathVariable String questionId){
//return question details
}
คำอธิบายประกอบซึ่งระบุว่าพารามิเตอร์เมธอดควรถูกผูกไว้กับตัวแปรเทมเพลต URI รองรับสำหรับเมธอดตัวจัดการคำอธิบายประกอบ RequestMapping
@RequestMapping(value = "/download/{documentId}", method = RequestMethod.GET)
public ModelAndView download(@PathVariable int documentId) {
ModelAndView mav = new ModelAndView();
Document document = documentService.fileDownload(documentId);
mav.addObject("downloadDocument", document);
mav.setViewName("download");
return mav;
}
สมมติว่าคุณกด url เป็น www.example.com/test/111 ตอนนี้คุณต้องดึงค่า 111 (ซึ่งเป็นไดนามิก) ไปยังเมธอดคอนโทรลเลอร์ของคุณในขณะนี้คุณจะใช้ @PathVariable ดังนี้:
@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}
ดังนั้นค่าตัวแปรจะถูกดึงมาจาก url
เป็นหนึ่งในคำอธิบายประกอบที่ใช้ในการแมป / จัดการ URI แบบไดนามิก คุณยังสามารถระบุนิพจน์ทั่วไปสำหรับพารามิเตอร์ไดนามิก URI เพื่อยอมรับเฉพาะอินพุตที่ระบุเท่านั้น
ตัวอย่างเช่นหาก URL ในการเรียกหนังสือโดยใช้หมายเลขเฉพาะจะเป็น:
URL:http://localhost:8080/book/9783827319333
ตัวเลขที่แสดงอยู่ท้าย URL สามารถดึงข้อมูลได้โดยใช้ @PathVariable ดังที่แสดง:
@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)
public String showBookDetails(@PathVariable("ISBN") String id,
Model model){
model.addAttribute("ISBN", id);
return "bookDetails";
}
ในระยะสั้นมันเป็นเพียงการดึงข้อมูลจากคำขอ HTTP ใน Spring
ดูข้อมูลโค้ดด้านล่าง
@RequestMapping(value = "edit.htm", method = RequestMethod.GET)
public ModelAndView edit(@RequestParam("id") String id) throws Exception {
ModelMap modelMap = new ModelMap();
modelMap.addAttribute("user", userinfoDao.findById(id));
return new ModelAndView("edit", modelMap);
}
หากคุณต้องการให้โครงการสมบูรณ์เพื่อดูว่ามันทำงานอย่างไรให้ดาวน์โหลดจากลิงค์ด้านล่าง: -
ModelAndView
จะทำผ่านมุมมองหรือพูด@PathVariable
คำอธิบายประกอบที่ใช้เพื่อรับชื่อตัวแปรและค่าที่ปลายคอนโทรลเลอร์ เช่น www.abcd.com/api/value=34455&anotherValue=skjdfjhks ที่นี่valueและanotherValueเป็นตัวแปรที่คุณสามารถรับได้โดยใช้ @PathVariable ("value") int value และ @PathVariable ("anotherValue") String anotherValue