2013-03-12 28 views
6

Bağlamdan sonra herhangi bir dizeyi işleyen bir eşleme isteği eşleme ör. aşağıdaki gibi www.example.com/anystringİlkbaharda @RequestMapping'deki url eşlemeleri nasıl hariç tutulur?

bunu hallediyorum:

@RequestMapping(value="/{str}", method = RequestMethod.GET) 
public String getApp(@PathVariable("str") String anyString, ModelMap model) { 
     //Do something 
    } 

sorun URL olduğu şöyle benim app 2-3 URL'ler ettik geçerli: www .example.com/www.example.com/contact, hakkında vb şöyle Onlar için talep Eşlemeleri'ni yazdı

:

@RequestMapping("/about") 
    public String getAboutPage() { 
     return "about"; 
    } 

Açıkçası, zaten herhangi bir dizenin getApp() tarafından ele alınması gerektiğini bildirdiğinden beri, getAboutPage() hiçbir zaman çalıştırılamaz. getApp() eşlemesinden /about, /contact vb. Nasıl hariç tutabilirim? Açık bir şekilde URL dizisine başka bir anahtar kelime ekleyebiliriz, ancak uygulama kullanım durumumda bu mümkün değil. Nazik yardım. :(

DÜZENLEME:?

Sadece gibi getApp()/about, /contact işlemek olmalı:

@RequestMapping(value="/{str}", method = RequestMethod.GET) 
    public String getApp(@PathVariable("str") String anyString, ModelMap model) { 

    if(anyString.equals("about")){ 
    //do about related stuff 
    } 

    if(anyString.equals("contact")){ 
    //do contact related stuff 
    } 

    //Do something 
    } 

HTTP istek yöntemini belirtme daha iyi bir yolu

+0

Daha fazla okunabilirlik için düzenleme için teşekkürler @Sazzadur. – LittleLebowski

cevap

3

var mı " Tümünü yakala "eşlemesi, yol eşleştiricisinin, mutlak yol eşleştirmelerinden daha spesifik olduğunu düşünmesini sağlar.

Mutlak yollarda istek yöntemini belirtin ve eşleme karşılaştırıcısı, yol değişkenini içermeden önce mutlak eşleşmeleri sipariş etmelidir. Örn.,

örn.

@RequestMapping("/about", method = RequestMethod.GET) 

Alternatif olarak, catch-all üzerinde yöntem spesifikasyonu kaldırmak olabilir:

@RequestMapping("/{str}") 

Farklı http isteği yöntemlerini kabul edecek o yollara herhangi Url'nizde yapısına bağlı olarak ve olsun veya olmasın, tamamen bağımlıdır .

+0

Bang! Yöntemi belirtin ve şimdi çalışıyor! Çok teşekkürler. – LittleLebowski

İlgili konular