Spring mvc @PathVariable


125

@PathVariablespring mvc 에서 사용하는 것에 대한 간단한 설명과 샘플을 줄 수 있습니까 ? URL을 입력하는 방법을 포함 해주세요.
jsp 페이지를 표시하는 올바른 URL을 얻는 데 어려움을 겪고 있습니다. 감사.


1
spring mvc 컨트롤러를 통해 jsp를 보여주는 것은 view 또는 say를 통해 수행됩니다 ModelAndView. @PathVariable컨트롤러 끝에서 변수 이름과 값을 가져 오는 데 사용되는 주석입니다. 예 : www.abcd.com/api/value=34455&anotherValue=skjdfjhks 여기 이고 anotherValue 는 @PathVariable ( "value") int 값과 @PathVariable ( "anotherValue") String anotherValue를 사용하여 얻을 수있는 변수입니다.
agpt

답변:


221

주문을 가져 오는 URL을 작성하고 싶다면 다음과 같이 말할 수 있습니다.

www.mydomain.com/order/123

여기서 123은 orderId입니다.

이제 spring mvc 컨트롤러에서 사용할 URL은 다음과 같습니다.

/order/{orderId}

이제 주문 ID를 경로 변수로 선언 할 수 있습니다.

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

URL www.mydomain.com/order/123을 사용하는 경우 orderId 변수는 봄까지 값 123으로 채워집니다.

또한 PathVariable은 URL의 일부이므로 pathVariable은 requestParam과 다릅니다. 요청 매개 변수를 사용하는 동일한 URL은 다음과 같습니다. www.mydomain.com/order?orderId=123

API DOC
Spring 공식 참조


pathVariable을 사용할 때. 뭔가를 가져와야합니까? 또는 어떤 의존? 감사.
james

PathVariable 주석을 가져 오기만하면됩니다. import org.springframework.web.bind.annotation.PathVariable
coder

예, 몇 가지 세부 정보, 수행하려는 작업 및 문제를 제공합니다
coder

stackoverflow.com/questions/19804202/… .. 여기에 코드가 있습니다
james

지금은 컨트롤러에 난 단지 ABC 얻고, www.mydomain.com/order/abc.def을 갖고 싶어
prem30488

10

아래 코드 스 니펫을 살펴보십시오.

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

코드 구성에 도움이되기를 바랍니다.


IM 모델과보기에 익숙하지 않습니다. 헤헤. 감사합니다 btw .. 내 프로젝트에서 이것을 구현하기를 기대합니다 ..하지만 먼저 완료해야합니다. :)
james

경로에 연결하려면 @PathVariable ( "type")을 작성해야한다고 생각합니다.
FelixM 2014 년

1
지금은 컨트롤러에 난 단지 ABC 얻고, www.mydomain.com/order/abc.def을 갖고 싶어
prem30488

1
정규 표현식 [a-zA-z0-9.]을 사용했습니다.
prem30488 2014

8

경로 변수가있는 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";
    }

이 메커니즘은 경로 변수가 주어진 변수에 연결되도록합니다.
ochiWlad

2

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

이 양식은 어떻게 생겼습니까? 입력 값 중 하나를 사용하여 {ISBN} 값을 지정할 수 있습니까? 그렇다면 양식 매개 변수 th : action에 대한 전체 URL을 어떻게 구성합니까?
Jan Horčička

1

메소드 매개 변수가 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;
}

0

www.example.com/test/111과 같은 URL을 입력했다고 가정 해 보겠습니다. 이제 컨트롤러 메서드에 값 111 (동적)을 가져와야합니다.

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

따라서 변수 값은 URL에서 검색됩니다.


0

동적 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";

}

간단히 말해 Spring의 HTTP 요청에서 데이터를 추출하는 것이 또 다른 일입니다.


이 양식은 어떻게 생겼습니까? 입력 값 중 하나를 사용하여 {ISBN} 값을 지정할 수 있습니까? 그렇다면 양식 매개 변수 th : action에 대한 전체 URL을 어떻게 구성합니까?
Jan Horčička

-1

아래 코드 스 니펫을 살펴보십시오.

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

전체 프로젝트가 어떻게 작동하는지 보려면 아래 링크에서 다운로드하십시오.

GitLab의 UserInfo 프로젝트

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.