Springフレームワーク08:ユーザー登録ページつくってみよう(ポイントなど)
ポイントとか覚えておくべきところ
<アノテーション>
@DateTimeFormat
画面からわたされてきた文字列を日付型に変換
@ModelAttribute
自動でModelクラスに登録(addAttribute)してくれる例)model.addAttribute("SignupForm", form);
@ModelAttribute("キー名")
※キー名は先頭が小文字(キャメルケース)になる
例)"signupForm"
例)postSignUp(@ModelAttribute SignupForm form, BindingResult bindingResult, Model model)
↑
同じ
↓
例)postSignUp(@ModelAttribute ("signupForm") SignupForm form, BindingResult bindingResult, Model model)
<ポイント>
【formタグ部分】
<form method="post" th:action="@{/signup}">
※ タイムリーフでSpringセキュリティ機能を使う場合
【ラジオボタンの実装】
拡張for文のようにModelに登録されている値を取得
th:each="変数名 : ${ModelAttributeのキー名}"
<div th:each="item : ${radioMarriage}">
<input type="radio" name="radioMarriage"
th:text="${item.key}"
th:value="${item.value}"
th:field="*{marriage}"/>
</div>
【オブジェクトを取得】
Modelに登録されているオブジェクトを取得
th:object="${ModelAttributeのキー名}"
例)
<form method="post" th:action="@{/signup}" th:object="${signupForm}">
【フィールドを取得】
オブジェクトの中のフィールドを取得
th:field="${ModelAttributeのキー名.フィールド名}"
th:field="*{フィールド名}" ←th.objectが付いたタグ内であればオブジェクト名を省略できる
例)
<input Type="text" class="form-control" th:field="*{userId}"/>
【文字コードの設定】
デフォルトのままでは日本語を使うと文字化けする
com.example.demo配下にWebConfigクラスを作る
package com.example.demo;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
@Configuration
public class WebConfig {
public MessageSource messageSourse() {
ReloadableResourceBundleMessageSource bean = new ReloadableResourceBundleMessageSource();
//メッセージのプロパティ―ファイル名(デフォルト)を指定します
//下記ではmessages.propertiesファイルがセットされます
bean.setBasename("classpath:messages");
//メッセージプロパティ―の文字コード
bean.setDefaultEncoding("UTF-8");
return bean;
}
@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setValidationMessageSource(messageSourse());
return localValidatorFactoryBean;
}
}