職業訓練覚え書き

49日目(Spring Framework7)

formタグライブラリのおさらい、補足

 

form部品の装飾

一部書き換えが必要なものがある

  • cssClass
  • cssErrorClass
  • disabled
  • element

id,placeholder等はそのまま利用できる

 

 

<form:radiobutton>の補足

checked="checked"でデフォルトのチェックを入れたいが、これだけだと記述が不十分

三項演算子を使ってnullの場合はチェック、そうでないなら空にする
<form:radiobutton path="ageGroup" value="2" checked="${survey.ageGroup == null ? 'checked' : ''}"/>20代

 

生年月日の受け取り
<form:input path="birthday" type="date"/>
⇒文字列で送られるデータをDate型では受け取れない
SimpleDateFormatを@InitBinderの中で使う

@InitBinder
public void initBinder(WebDataBinder binder) {
  SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
  fmt.setLenient(false);※日時のチェックを厳密にする
  binder.registerCustomEditor(Date.class, new CustomDateEditor(fmt, true));
}
※覚えるというよりは、定型文として書く感じ


Springタグライブラリ

2つの異なる階層のURLに対応する1つのビューがあるような状況


@RequestMapping("/test")
public String test() {
    return "test";
}

@RequestMapping("/test/{id}")
public String testPath(
        @PathVariable("id") Integer id) {
        return "test";
        }

①番は問題ないが、②番からアンケート調査のページに行こうとするとリンク先に飛べない。

解決策として
●コンテキストルートを含めてリンクを記述する
例:
  <p><a href="/validation/contact">お問い合わせ</a></p>
●Springタグライブラリを利用
例:
  <p><a href="<spring:url value="/contact"/>">お問い合わせ</a></p>
※こっちのほうが変更に強いらしい。

 

Springのバリデーション

実際にはHibernate Validatorというライブラリを使う
アノテーションでバリデーションができる

 

利用方法

●ライブラリ追加
 pom.xmlhibernate-validatorを追加する

●domainオブジェクトにバリデーションの内容を記述
 @NotBlankで必須項目にしたり、@Min、@Maxで文字数制限をつけたりできる

●Controllerでバリデーションの結果に応じた処理を記述

●Springのformタグライブラリでエラーメッセージを表示

 

 

ちょっとだけバリデーションの動作確認をして今日は終了。
けっこう難しいので、明日改めて復習する