package jp.dip.arimodoki.cntl;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import jp.dip.arimodoki.model.PromenadeForm;
@Controller
@ComponentScan("jp.dip.arimodoki.*")
public class Promenade {
/**
* このコントローラは、PromenadeFormクラスを
* リクエスト/レスポンス用パラメータのデータモデルとして使います
* */
@Autowired
private PromenadeForm promenadeForm;
/**
* PromenadeFormクラスを、"PromenadeFormData"という名前で、Modelにバインドします。
* この処理を行うことで、viewにレスポンスする場合は
* 特にレスポンス処理を明記しなくても、自動的にModelがviewに返却され
* view側(Thymeleaf側)では、PromenadeFormData.プロパティ名
* でFormBeanのプロパティが参照可能となります。
* ※)@ModelAttributeアノテーションのバインド名が重要であって、
* メソッド名はなんでも構いません(クラス内で重複しなければ)
* @return バインドされたFormBeanのインターフェース PromenadeFormIfを返します。
*/
@ModelAttribute("PromenadeFormData")
public PromenadeForm setupBind() {
return this.promenadeForm;
}
/**
* 最初の入力画面を単純に表示するためだけのメソッドです
* @return view名(入力画面)
*/
@RequestMapping(value = "/promenade")
public String promenade() {
return "promenade";
}
/**
* 入力結果検証メソッド
* @param formbean 入力検証用FormBean
* @param result エラー検証結果
* @return view名(検証成功なら結果画面、失敗なら入力画面)
*/
@RequestMapping(value = "/promenaderes")
public String promenaderes(
@Valid @ModelAttribute("PromenadeFormData") PromenadeForm formbean,
BindingResult result
) {
if (result.hasErrors()) {
return "promenade";
}
String[] checkVal = this.promenadeForm.getCheckVals();
formbean.setFavorite(checkVal[0]);
return "promenaderes";
}
}
|