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.xmlにhibernate-validatorを追加する
●domainオブジェクトにバリデーションの内容を記述
@NotBlankで必須項目にしたり、@Min、@Maxで文字数制限をつけたりできる
●Controllerでバリデーションの結果に応じた処理を記述
●Springのformタグライブラリでエラーメッセージを表示
ちょっとだけバリデーションの動作確認をして今日は終了。
けっこう難しいので、明日改めて復習する