[英]How to use simple html form to get value from rest service?
我有這樣的simle控制器:
@Controller
@RequestMapping("/raport")
public class SiteController {
@RequestMapping(value = "/{url}", method = RequestMethod.GET)
public String getMovie(@PathVariable String url, ModelMap model) {
model.addAttribute("url", url);
return "raport";
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getDefaultMovie(ModelMap model) {
model.addAttribute("url", "this is default movie url");
return "raport";
}
}
如果我調用http://localhost:8090/movieraport/raport/testMovie
我從服務器得到了正確的響應
電影網址:testMovie
但我希望在頁面上有一個小形式(.jsp):
<body>
<form action="raport/" method="get">
<input name="url" />
<input type="submit" value="Update Record">
</form>
<h3>Movie url : ${url}</h3>
當我點擊提交時,我得到了這樣的網址
http://localhost:8090/movieraport/raport/raport?url=testMovie
和服務器無法使用{testMovie} :(
我有:
電影網址:raport
你能幫助我嗎?
如果要將“url”作為參數傳遞,則需要執行以下操作:
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getMovie(@RequestParam String url, ...) {
...
}
你錯誤地認為應該將“url =”傳遞給你的“/ {url}”映射,我想。 簡單地使用@RequestParam
而不是@PathVariable
或者創建另一種方法來支持兩者,如果這是你需要的。
編輯
在您發表評論之后,我應該強調一點,我無法知道您的用例是什么或您可能需要的所有端點,但是從您給出的例外情況來看,聽起來您只是用我的替換你的getMovie()
。 getMovie()
現在簽名與你的getDefaultMovie()
沖突。 您可以輕松更改簽名,如下所示:
@RequestMapping(value = "/", params = "url", method = RequestMethod.GET)
public String getMovie(@RequestParam String url, ...) {
...
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getDefaultMovie(...) {
...
}
如您所見,我已將params = "url"
添加到getMovie()
簽名中。 這將確保getMovie()
用於處理包含url
參數的任何請求。 其余的將去getDefaultMovie()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.