簡體   English   中英

如何使用簡單的html表單從休息服務中獲取價值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM