1

UrlBasedViewResolver を使用しています。私の要件は、2 つの異なる URL が同じコントローラーと通信し、URL に基づいて page1 または page2 という 2 つの異なるページに移動することです。これら 2 つのページには同じモデル オブジェクトがあり、UI の小さな変更を除いてほとんど同じです。Spring MVC でこれをうまく実現するにはどうすればよいでしょうか。

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

1 に答える 1

2

1 つのオプション:

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

2 番目のオプションでは、コントローラーのマッピングによっては問題が発生する可能性があり、着信 URL に基づいてビューを返そうとするため、潜在的なセキュリティ上の問題が発生する可能性があります。

于 2012-08-16T05:27:22.853 に答える