Spring mvc @PathVariable


125

@PathVariableSpring mvc'de kullanım konusunda bana kısa bir açıklama ve bir örnek verebilir misiniz ? Lütfen url'yi nasıl yazdığınızı ekleyin?
Jsp sayfasını göstermek için doğru url'yi almakta zorlanıyorum. Teşekkürler.


1
bahar mvc denetleyicisi aracılığıyla bir jsp gösteren görünüm veya diyelim ModelAndView. @PathVariableek açıklama değişken adını ve denetleyici sonunda değerini almak için kullanılır. ör. www.abcd.com/api/value=34455&anotherValue=skjdfjhks buradaki değer ve anotherValue @PathVariable ("value") int değeri ve @PathVariable ("anotherValue") String anotherValue
agpt

Yanıtlar:


221

bir sipariş almak için bir url yazmak istediğinizi varsayalım, diyebilirsiniz

www.mydomain.com/order/123

123, orderId'dir.

Yani şimdi bahar mvc denetleyicisinde kullanacağınız url şöyle görünecektir:

/order/{orderId}

Artık sipariş kimliği bir yol değişkeni olarak tanımlanabilir

@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}

url www.mydomain.com/order/123 kullanırsanız, orderId değişkeni ilkbaharda 123 değeri ile doldurulur.

Ayrıca, pathVariable URL'nin bir parçası olduğu için PathVariable'ın requestParam'dan farklı olduğunu unutmayın. İstek parametresini kullanan aynı url şöyle görünür www.mydomain.com/order?orderId=123

API DOC
Bahar Resmi Referansı


pathVariable kullanarak. bir şey ithal etmem gerekiyor mu? veya herhangi bir bağımlılık? Teşekkürler.
james

PathVariable annotation import org.springframework.web.bind.annotation.PathVariable
coder

evet, bazı ayrıntılar sağlayın, ne yapmaya çalıştığınızı ve sorun nedir
kodlayıcı



10

Aşağıdaki kod parçasına bir göz atın.

@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;
}

Umarım kodunuzu oluşturmanıza yardımcı olur.


model ve görünüme aşina değilim. hehe. teşekkürler btw .. bunu projemde uygulamayı dört gözle bekliyorum .. ama önce bitirmem gerekiyor. :)
james

Bence yola bağlanmak için @PathVariable ("type") yazmanız gerekiyor.
FelixM


1
regexp kullanıldı mı [a-zA-z0-9.]
prem30488

8

Yol değişkenleri olan bir url'niz varsa, örneğin www.myexampl.com/item/12/update burada 12 id ve create, yürütmenizi belirtmek için kullanmak istediğiniz değişkendir, örneğin bir güncelleme yapmak için tek bir form kullanarak ve oluşturmak, bunu kontrol cihazınızda yaparsınız.

   @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";
    }

Bu mekanizma, bir yol değişkeninin belirli bir değişkene bağlı olmasını sağlar.
ochiWlad

2

@PathVariable değeri URL'den almak için kullanılır

örneğin: Bir soru almak için

www.stackoverflow.com/questions/19803731

Burada bazı sorular idURL'de parametre olarak iletilir

Şimdi bu değeri almak için controlleryapmanız gereken tek şey, yöntem parametresinde @PathVariable'ı geçmek.

@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
    public String getQuestion(@PathVariable String questionId){
    //return question details
}

Bunun formu nasıl görünüyor? {ISBN} değerini belirtmek için giriş değerlerinden birini kullanabilir miyim? Yanıt evet ise, th: action form parametresi için tam URL'yi nasıl oluşturabilirim?
Jan Horčička

1

Bir yöntem parametresinin bir URI şablon değişkenine bağlanması gerektiğini belirten ek açıklama. RequestMapping açıklamalı işleyici yöntemleri için desteklenir.

@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;
}

0

Www.example.com/test/111 olarak bir url'ye ulaştığınızı varsayalım. Şimdi denetleyici yönteminize 111 değerini (dinamik olan) almanız gerekiyor. @PathVariable'ı aşağıdaki gibi kullanacaksınız:

@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}

SO değişken değeri url'den alınır


0

Dinamik URI'leri eşlemek / işlemek için kullanılan ek açıklamalardan biridir. Yalnızca belirli bir girdi türünü kabul etmek için URI dinamik parametresine yönelik normal bir ifade bile belirtebilirsiniz.

Örneğin, benzersiz bir numara kullanarak bir kitabı almak için URL şöyle olursa:

URL:http://localhost:8080/book/9783827319333

URL'nin sonundaki numara, gösterildiği gibi @PathVariable kullanılarak getirilebilir:

@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)

public String showBookDetails(@PathVariable("ISBN") String id,

Model model){

model.addAttribute("ISBN", id);

return "bookDetails";

}

Kısacası, Spring'deki HTTP isteklerinden veri çıkarmak başka bir şeydi.


Bunun formu nasıl görünüyor? {ISBN} değerini belirtmek için giriş değerlerinden birini kullanabilir miyim? Yanıt evet ise, th: action form parametresi için tam URL'yi nasıl oluşturabilirim?
Jan Horčička

-1

aşağıdaki kod parçasına bir göz atın.

@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);      
    }

Tüm projenin nasıl çalıştığını görmesini istiyorsanız, aşağıdaki bağlantıdan indirin: -

GitLab'da UserInfo Projesi

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.