İlkbaharda birden fazla @RequestMapping ek açıklaması nasıl kullanılır?


247

@RequestMappingBir yöntem üzerinde birden fazla ek açıklama kullanmak mümkün müdür ?

Sevmek :

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

Yanıtlar:


436

@RequestMappingbir String[]value parametresine sahip olduğundan, bunun gibi birden çok değer belirtebilmeniz gerekir:

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


2
Yani, "" veya "/" değerlerini uygulamamda çalışacak şekilde almakta sorun yaşıyorum. Senin için çalışıyorlar mı?
Ed Brannin

Birden çok ek açıklama kullanarak farklı başarı görünümlerini ve form görünümlerini her istek URL'siyle ilişkilendirmenin bir yolu var mı?
k-den

@EdBrannin Kullanmak için çok ihtiyacım var, özel, başlık, tüketir, params, vb
deFreitas

Ayrıca bilmek istiyorum, hangi istek eşleştirmesinin çağrıldığını nasıl bilebilirim. / veya hoşgeldin mi?
Siddharth

1
@Siddharth 1. HttpRequest türünde bir parametre ekleyebilir ve inceleyebilirsiniz. 2. Hangi eşlemenin çağrıldığını gerçekten önemsiyorsanız, belki bu tekniği kullanmayın. ;)
Ed Brannin

24

Testimden (bahar 3.0.5), @RequestMapping(value={"", "/"}) - sadece "/"çalışıyor, ""çalışmıyor. Ancak bu çalışmalar bulundu: @RequestMapping(value={"/", " * "}), " * "maçlar şey, hiç başkalarının durumda varsayılan işleyici olacak böylece.


13

Gerek yok. Harita açıklaması ek açıklama joker karakterleri ve karınca tarzı yolları destekler. Ayrıca yalnızca varsayılan bir görünüm istediğiniz gibi görünüyor, böylece

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

yapılandırma dosyanızda. Bu, tüm istekleri Kök'e hoş geldiniz görünümüne yönlendirecektir.


Bu iki çizgi arasında bir şey olması gerekiyor muydu? Ben FreeMarkerViewResolver kullanıyorum - bu yüzden bu şekilde gitmek zorunda kalacak ... Şey, sanırım ben sadece birden çok ViewResolver oluşturabilir.
wuntee

2
Birden çok RequestMapping ek açıklamasının sağlayabileceği esnekliği sağlamaz. Örneğin, bir yöntem POST ile "/ a" değerini veya GET ile "/ b" değerini desteklemek istiyorsam. Tabii ki geçici çözüm oldukça kolaydır (işlevselliği üçüncü bir yöntemle yeniden düzenleme), ancak bunun yararlı olacağını söylemek.
simon

1

En kısa yol: @RequestMapping({"", "/", "welcome"})

Yine de şunları yapabilirsiniz:

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

1

Şu anda Spring-Boot 2.0.4 kullanıldığında - {} çalışmaz.

@RequestMapping

Yine de değer parametresi olarak String [] vardır, bu nedenle bildirim şöyle görünür:

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

** Güncelleme - Spring-Boot 2.2 ile çalışır **

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

Köşeli ayraçlar geçersiz. Bir dizi değişmez değeri için geçerli sözdizimi, {}
luis.espinal

@ luis.espinal Köşeli ayraçlar 2.0.4 Spring-Boot sürümü ile çalıştı. Yazımı güncelleyeceğim.
Falcon

0

Aşağıdakiler de kabul edilebilir:

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

Aynı uygulanabilir @RequestMappingyanı


-2

Hala çağrılan uri'yi almak istiyorsanız PathVariable ek açıklamasını kullanmak daha iyidir.

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

veya istek nesnesinden ayrıştırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.