コントローラクラスは@Controllerというアノテーションを付与することで、Springフレームワークに自動認識させることができる。(ただし名前によるコントローラ認識の設定ファイル記述は必要)
@Controller
public class SampleController {
画面入力項目を集めたフォームクラスを定義し、コントローラクラスに設定するための記述方法は、次の通り。
@ModelAttribute
public SampleForm setSampleForm() {
return new SampleForm();
}
コントローラクラス内でModelAttributeアノテーションを使い、フォームクラスをnewするsetterメソッドを作ることで、サブミット時に画面入力項目のデータがフォームクラスに設定されるようになる。
HTTPプロトコルのGETに対応するハンドラメソッドを作りたい場合は、次のように記述する。
@RequestMapping(method = RequestMethod.GET)
public ModelAndView toInitialPage() {
戻り値はStringでもよく、その場合はビューのリソース位置をreturnする。
@RequestMapping(method = RequestMethod.GET)
public String index() {
return "/index/index";
}
このように記述した場合/WEB-INF/jsp/index/index.jspを指す。(ただしリソースパスはweb.xml等で設定したものによって変わる)
DTOなど、画面表示項目がある場合は、それをModelAndViewクラスに設定してreturnする。
@RequestMapping(method = RequestMethod.GET)
public ModelAndView index() {
// 画面表示項目の取得
// 画面出力内容を設定する
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("sampleDto", sampleDto);
// 画面遷移を行う
return modelAndView;
}
sampleDtoというDTOクラスには、画面表示用の項目を設定してあるものとする。
上記のように記述した場合、JSPのEL式で${sampleDto}と記述すればアクセスできる。
${sampleDto.id}など、DTOクラスのメンバにもアクセス可能である。(この辺りは通常のEL式の使い方と同じ)
フォームクラスを定義し、サブミット時にフォームクラスのデータを引数として取得したい場合は、次のように記述する。
@RequestMapping(method = RequestMethod.POST)
public ModelAndView onSubmit(SampleForm sampleForm, BindingResult bindingResult) {
HttpSessionの情報を受け取りたい場合は、次のように記述する。
@RequestMapping(method = RequestMethod.POST)
public ModelAndView onSubmit(HttpSession session) {
引数・戻り値に応じてSpringフレームワークが自動で設定・取得を行ってくれる。
0 件のコメント:
コメントを投稿