フォームに入力された内容によって画面遷移先を変更したい
私はSpring Boot + Thymeleaf + MySQLで開発を始めたばかりです。
フォームに入力された内容によって画面遷移先を変更したいのですが、うまくいっていません。
例えば、入力フォームに「1」(DBのID)と入力されたら、
http://localhost:8080/edit/1
に遷移したいです。
初歩的な質問ですみませんが、回答お願い致します。
◆ソースコード
[html]
<form method="post" action="/edit">
<h1>Please input the number</h1>
<input type="text" name="id" th:value="${id}" />
<input type="submit" value="Send" >
<br>
<a th:href="@{/}">Back enter display</a>
</form>
[コントローラ]
@RequestMapping(value = "/edit/{id}", method = RequestMethod.GET)
public ModelAndView edit(@ModelAttribute MyData mydata, @PathVariable int id, ModelAndView mav) {
mav.setViewName("edit");
mav.addObject("title", "edit mydata");
mav.addObject("id",id);
Optional<MyData> data = repository.findById((long)id);
mav.addObject("formModel",data.get());
return mav;
}
@RequestMapping(value = "/edit/{id}", method = RequestMethod.POST)
@Transactional(readOnly = false)
public ModelAndView update(@ModelAttribute MyData mydata,@PathVariable int id, ModelAndView mav) {
mydata.setId(id);
repository.saveAndFlush(mydata);
return new ModelAndView("redirect:/");
}
@RequestMapping(value="/searchId", method = RequestMethod.GET)
public ModelAndView searchId(@ModelAttribute("formModel") MyData mydata, ModelAndView mav) {
mav.setViewName("searchId");
return mav;
}
@RequestMapping(value="/searchId", method = RequestMethod.POST)
public ModelAndView serachId(@PathVariable int id, ModelAndView mav) {
mav.setViewName("searchId");
return new ModelAndView("'/edit");
}
[エラー内容]
入力フォームに「1」と入力して「Send」ボタンを押すと、
URLは「http://localhost:8080/edit」となり、
エラーメッセージは以下が表示されます。
--
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Oct 09 19:26:41 JST 2019
There was an unexpected error (type=Not Found, status=404).
No message available
--
ブラウザでURLに直接
http://localhost:8080/edit/1
と入力した場合は、正しく画面遷移することは確認できています。
どのように修正したらよいか、教えてください。