2012-08-16 3 views
1

UrlBasedViewResolver를 사용하고 있습니다. 내 요구 사항은 두 개의 서로 다른 URls가 동일한 컨트롤러와 대화하며 URL을 기반으로 한 페이지 1 또는 페이지 2라고하는 두 개의 다른 페이지로 이동해야한다는 것입니다. 이 두 페이지는 동일한 모델 객체를 가지며, 사소한 UI 변경 사항을 제외하고 거의 동일합니다. Spring MVC에서 이것이 어떻게 깔끔하게 달성 될 수 있는가?봄 MVC 여러 @RequestMappings

@RequestMapping(value = {"/page1","/page2"}, method=RequestMethod.GET) 
public String displayPage(ModelMap map){ 
    // return to Page1 or Page2 accordingly wherever it came from 
} 

@RequestMapping(value = {"/page1","/page2"}, method=RequestMethod.POST) 
public ModelAndView submitPage(@ModelAttribute("model") Model model){ 
    return new ModelAndView("page1 or page2", "command", model); 
} 

답변

2

하나의 옵션 :

@RequestMapping(value = {"/page1"}, method=RequestMethod.GET) 
public String displayPage1(ModelMap map){ 
    displayPageCommon(map); 
    return "Page1"; 
} 

@RequestMapping(value = {"/page2"}, method=RequestMethod.GET) 
public String displayPage2(ModelMap map){ 
    displayPageCommon(map); 
    return "Page2"; 
} 

private void displayPageCommon(ModelMap map){ 
    //shared code 
} 

또 다른 :

@RequestMapping(value = {"/{pageName}"}, method=RequestMethod.GET) 
public String displayPage(@PathVariable String pageName, ModelMap map){ 
    //shared code 
    return pageName; 
} 

두 번째 옵션으로 인해 뷰를 기반으로 반환 노력에 컨트롤러 매핑에 따라 몇 가지 문제, 일부 잠재적 인 보안 문제가있을 수 있습니다 들어오는 URL에

+0

입력 해 주셔서 감사합니다. 두 번째 접근 방식에는 보안 문제가있는 것 같지만 전통적인 접근 방식이 더 좋습니다. – spal