2014-04-09 19 views
1

我正在尋找一種在Spring mvc項目中通過方法查找移動的方法。Spring 3.x MVC - 如何通過方法移動

例如,當URL來到「localhost:8080/myproject/common?m = getInfo」時,我想在CommonController.java中使用getInfo方法。

我總是做的事情就像下面這樣。

@Controller 
@RequestMapping("/common") 
public class CommonController { 
    @RequestMapping("/getInfo") 
    public ModelAndView getInfo() throws Exception { 
    System.out.println("Get Information from Common controller"); 
    return new ModelAndView("index", "model", new Object()); 
    } 
} 

通過這種方式,我可以訪問「localhost:8080/common/getInfo」。但是,我想要做的是訪問作爲參數。它應該是「localhost:8080/common?m = getInfo」。

我該如何做到這一點?我看到了幾個使用MultiActionController的例子。用法與3.X版一樣嗎?我應該添加控制器到root-context.xml嗎?(這是我真的不想做的:<我可以使用只是<context:component-scan>和其他註釋?)

謝謝。

回答

0

你可以使用@RequestParam註釋:

@Controller 
@RequestMapping("/common") 
public class CommonController { 

    public ModelAndView getInfo(@RequestParam("m") String param) throws Exception { 
    if("getInfo".equals(param)){ 
     //your code 
    } 
} 

,或者直接與@RequestMapping

@Controller 
public class CommonController { 
    @RequestMapping(value = "/common", params = "m=getInfo") 
    public ModelAndView getInfo() throws Exception { 
     //your code here 
    } 
} 
+0

由於它的作品不錯。然而,我可以設置MethodNameResolver與代碼,而不是xml配置? –

+0

@JuneyoungOh它會幫助我,如果你提供更多的細節,那是你到底想要做什麼。從我的理解你的問題,如果你想避免xml配置,你可以在你的方法中使用@RequestMapping(value =「/ common」,params =「m = XXXXX」)' – Daniel

+0

我可以完成我想要的用你的答案做。但是,如果我這樣使用,每次我都應該輸入「m = XXXX」。參數名稱「m」如此固定,所以我想將其作爲模式。在Spring 2.x方式中,我可以在xml中的bean聲明中放入「p:methodNameResolver」。所以我認爲我們可以在某處編寫該模式(「m =」)並且工作原理相同。我在問這個,因爲我不知道它是否可能。 –