今日はGETのデータの取得方法です。
GETでデータを取得する。
今回もアノテーションが大活躍です。というか、アノテーションしかないなぁ…
やりたいこと
http://localhost:8080/sample/edit/
ポイント
アノテーション@RequestMappingのvalue = "/edit/{id}" とすると上のようなURLにマッピングされます。
そのIDを取得するときには関数の引数に@PathVariableとするととれます。
前はrequest.getParameter("id")とやっていたのに、ずいぶん変わったな。
取得したIDをキーにして、serversに取得します。
本当は内部IDを使わないで、シーケンスでやりたかったのですが、方法がわかりませんでした。
(ドキュメント見たけどシーケンスの記述を見つけられず)
結果を画面表示用のBeanに詰めて、それをmodelにセットしています。
@RequestMapping(value = "/edit/{id}", method = RequestMethod.GET) public String edit(@PathVariable String id, Model model){ logger.debug("edit method->"+id); ServersDao dao = new ServersDao(); ServerBean bean = dao.findById(id, getDb()); EditPage page = new EditPage(); page.setId(bean.getId().toString()); page.setIps(bean.getIps()); page.setOs(bean.getOs()); page.setServerName(bean.getServerName()); page.setCreated(bean.getCreated()); page.setUpdated(bean.getUpdated()); Map<String, String> softMap = bean.getSoft(); for(Iterator<String> itr = softMap.keySet().iterator(); itr.hasNext();){ String key = itr.next(); page.addSoft(key, softMap.get(key)); } model.addAttribute(page); // 引数を渡すバージョンだとエラーバインドがうまくいかない // model.addAttribute("serverBean", page); return "edit"; }