2015-11-05 87 views
2

您好,我是新實現Spring REST Web Service的原因是什麼導致了我的錯誤。找不到具有URI的HTTP請求的映射

這裏是我的代碼

@RequestMapping(value = "/message/{regID}/name/{name}", method = RequestMethod.GET, headers = "Accept=application/json") 
    public String getMessage(@PathVariable String regID, @PathVariable String name) { 
     return "Hello Alvin!" + regID + " " + name; 
    } 

我想用Web瀏覽器來調用它,但我沒能成功地調用它,但是當我打電話的可能另一RequestMapping成功完成一個參數。這裏是RequestMapping是我成功地稱爲

@RequestMapping(value = "/country/{id}", method = RequestMethod.GET, headers = "Accept=application/json") 
public Country getCountryById(@PathVariable int id) { 
    List<Country> listOfCountries = new ArrayList<Country>(); 
    listOfCountries = createCountryList(); 

    for (Country country : listOfCountries) { 
     if (country.getId() == id) 
      return country; 
    } 

    return null; 
} 

或如何可以實現多個參數我RequestMapping ..?

+0

我看到的唯一區別是返回類型。也許字符串不能被序列化。你有沒有嘗試在'getCountryById'方法中返回'String'?只是爲了測試,如果它的工作。返回,例如空字符串。 –

+0

,但在我的一些其他的RequestMapping方法與單參數它的工作,但如果我有兩個或更多它不工作是有什麼我需要配置或與我的服務..? – DreamBigAlvin

+0

嘗試刪除標題。 – Lovababu

回答

0

我你有一個以上的路徑變量,你需要sepecify標識符在@PathVariable

@RequestMapping(value = "/message/{regID}/name/{name}", method = RequestMethod.GET, headers = "Accept=application/json") 
    public String getMessage(@PathVariable("regID") String regID, @PathVariable("name") String name) { 
     return "Hello Alvin!" + regID + " " + name; 
    } 
+0

不需要 - 如果URI模板變量名稱與方法參數名稱匹配,則可以省略標識符詳細信息。 –

1

有機會,您使用的InternalResourceViewResolver,在這種情況下,方法,返回String會將返回的值解釋爲將在視圖解析器中指定的位置內搜索的視圖名稱。你沒有映射發現大概指的是框架無法找到一個視圖名稱匹配你回什麼

至於你的意圖似乎是與@ResponseBody返回文本只有你應該簡單地附加地圖的方法這將反過來你的文本添加到響應主體,而不是將其解釋爲視圖名稱,所以

@ResponseBody 
public String getMessage(@PathVariable String regID, @PathVariable String name) 

否則,你的映射只是罰款

相關問題