#11 messages.propertiesの値をコントローラに渡す
前回の記事ではmessages.propertiesに記述した内容を各画面に直接入力してましたが、今回はコントローラに渡してから各画面で値を表示します。
前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため、所々説明は省略します。
前回まで
前回の記事
前々回の記事
構築環境
成果物
前回と変化無し
今回行うこと
1. サービス処理にmessages.propertiesの値を渡す
UserService.java
package com.example.service;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Service;
@Service
public class UserService {
/* messages.propertiesの値を取得するためにMessageSourceを使用する */
@Autowired
private MessageSource messagesource;
/* 性別のMapを生成する */
public Map<String, Integer> getGenderMap() {
Map<String, Integer> genderMap = new LinkedHashMap<>();
/* getMessageを使用することでmessages.propertiesの内容を取得 */
String male = messagesource.getMessage("user.signup.Male", null, Locale.JAPAN);
String female = messagesource.getMessage("user.signup.FeMale", null, Locale.JAPAN);
genderMap.put(male, 1);
genderMap.put(female, 2);
return genderMap;
}
}
getMessageメソッドの引数
- キー名(第1引数):messages.propertiesのキー名を記述します。
- 埋め込みパラメーター(第2引数):メッセージに入れるパラメーターを指定します。
- ロケール(第3引数):国(地域)を指定します。
最後に
コントローラー、画面レイアウトは変更しなくともこれで変更は完了です。
ラジオボタンがどちらか片方しか押せないはずなのに両方押せてします事象が発生中
→name属性がないことことが原因と判明