SpringMVC、MongoDBを使ってみたその3

今日は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";
	}