見出し画像

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;
 }
}


もしも気に入ったら、サポートお願いします! おやつを買いますので、餌付けができます。