วิธีการใช้คำอธิบายประกอบ @RequestMapping หลายรายการในฤดูใบไม้ผลิ


247

เป็นไปได้ไหมที่จะใช้@RequestMappingคำอธิบายประกอบหลายรายการบนวิธีการ

ชอบ :

@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
  return "welcome";
}

คำตอบ:


436

@RequestMappingมีString[]พารามิเตอร์ค่าดังนั้นคุณควรระบุหลายค่าดังนี้:

@RequestMapping(value={"", "/", "welcome"})


2
ที่กล่าวว่าฉันมีปัญหาในการรับค่า "" หรือ "/" เพื่อใช้งานได้จริงในแอปพลิเคชันของฉัน พวกเขาทำงานให้คุณหรือไม่
Ed Brannin

มีวิธีการเชื่อมโยงมุมมองความสำเร็จที่แตกต่างกันและมุมมองฟอร์มกับแต่ละ URL คำขอโดยใช้คำอธิบายประกอบหลายรายการหรือไม่
k-den

@Edtrannin ฉันต้องการใช้งานมากมาย, กำหนดเอง, ส่วนหัว, สิ้นเปลือง, params และอื่น ๆ
deFreitas

นอกจากนี้ฉันต้องการทราบฉันจะทราบได้อย่างไรว่าการร้องขอการแมปใดถูกเรียก มัน / หรือยินดีต้อนรับ
Siddharth

1
@Siddharth 1. คุณอาจจะสามารถเพิ่มและตรวจสอบพารามิเตอร์ประเภท HttpRequest 2. หากคุณสนใจว่าการจับคู่แบบใดที่เรียกว่าจริง ๆ อาจไม่ใช้เทคนิคนี้ ;)
Ed Brannin

24

จากการทดสอบของฉัน (สปริง 3.0.5) @RequestMapping(value={"", "/"}) - ใช้"/"งานได้เท่านั้น""ไม่ได้ แต่ผมพบว่างานนี้@RequestMapping(value={"/", " * "})ที่" * "ตรงกับอะไรดังนั้นมันจะเป็นตัวจัดการเริ่มต้นในกรณีที่ไม่มีคนอื่น ๆ


13

ไม่จำเป็นต้อง คำอธิบายประกอบ RequestMapping สนับสนุนสัญลักษณ์แทนและเส้นทางสไตล์มด ดูเหมือนว่าคุณเพียงแค่ต้องการมุมมองเริ่มต้นเพื่อให้คุณสามารถวาง

<mvc:view-controller path="/" view-name="welcome"/>

ในไฟล์ปรับแต่งของคุณ นั่นจะส่งต่อคำขอทั้งหมดไปยังรูทไปยังมุมมองการต้อนรับ


ควรจะมีบางอย่างระหว่างสองบรรทัดเหล่านั้นหรือไม่? ฉันใช้ FreeMarkerViewResolver - ดังนั้นฉันจะต้องใช้วิธีนี้ ... เอาละฉันคิดว่าฉันสามารถสร้าง ViewResolver หลายรายการได้
wuntee

2
ไม่มีความยืดหยุ่นที่จะมีหมายเหตุประกอบการร้องขอ RequestMapping หลายรายการ ตัวอย่างเช่นถ้าฉันต้องการมีวิธีการหนึ่งสนับสนุนค่า "/ a" ด้วย POST หรือค่า "/ b" ด้วย GET แน่นอนว่าการแก้ปัญหานั้นค่อนข้างง่าย (การปรับการทำงานในวิธีที่สาม) แต่เพียงบอกว่ามันจะมีประโยชน์
simon

1

วิธีที่สั้นที่สุดคือ: @RequestMapping({"", "/", "welcome"})

แม้ว่าคุณจะสามารถทำได้:

  • @RequestMapping(value={"", "/", "welcome"})
  • @RequestMapping(path={"", "/", "welcome"})

1

ตอนนี้เมื่อใช้ Spring-Boot 2.0.4 - {} จะไม่ทำงาน

@RequestMapping

ยังคงมี String [] เป็นพารามิเตอร์ค่าดังนั้นการประกาศจะมีลักษณะดังนี้:

 @RequestMapping(value=["/","/index","/login","/home"], method = RequestMethod.GET)

** อัปเดต - ทำงานร่วมกับ Spring-Boot 2.2 **

 @RequestMapping(value={"/","/index","/login","/home"}, method = RequestMethod.GET)

วงเล็บเหลี่ยมไม่ถูกต้อง ไวยากรณ์ที่ถูกต้องสำหรับตัวอักษรอาร์เรย์คือการใช้วงเล็บปีกกา {}
luis.espinal

@ luis.espinal วงเล็บเหลี่ยมทำงานร่วมกับรุ่น Spring Boot-2.0.4 ได้ ฉันจะอัปเดตโพสต์ของฉัน
Falcon

0

ต่อไปนี้เป็นที่ยอมรับเช่นกัน:

@GetMapping(path = { "/{pathVariable1}/{pathVariable1}/somePath", 
                     "/fixedPath/{some-name}/{some-id}/fixed" }, 
            produces = "application/json")

สามารถนำไปใช้@RequestMappingกันได้เช่นกัน


-2

การใช้คำอธิบายประกอบ PathVariable จะดีกว่าถ้าคุณยังต้องการรับ uri ที่ถูกเรียก

@PostMapping("/pub/{action:a|b|c}")
public JSONObject handlexxx(@PathVariable String action, @RequestBody String reqStr){
...
}

หรือแยกมันออกจากคำขอวัตถุ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.