Created
October 22, 2020 05:07
-
-
Save Winged-Git/6f39dbfd6ac07836a6432430b58020d3 to your computer and use it in GitHub Desktop.
外部Jar化したコード修正版(BaseApplicationConfig.javaに変更はなし)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Locale; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.web.context.request.RequestContextHolder; | |
import org.springframework.web.context.request.ServletRequestAttributes; | |
import org.springframework.web.servlet.LocaleResolver; | |
import org.springframework.web.servlet.i18n.CookieLocaleResolver; | |
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; | |
import lombok.Setter; | |
@Configuration | |
public class BaseBeanConfig /* implements ServletContextAware */ { | |
/* ロケールのリクエストパラメータをlangにしたい */ | |
@Bean | |
public LocaleChangeInterceptor localeChangeInterceptor() { | |
LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor(); | |
interceptor.setParamName("lang"); | |
return interceptor; | |
} | |
/* for ServletContextAware */ | |
/* nullなのであきらめる | |
@Setter(onMethod = @__({ @Override })) | |
private ServletContext servletContext; | |
*/ | |
/* Cookieにロケール情報を持つ */ | |
@Bean | |
public LocaleResolver localeResolver() { | |
/* デフォルトのCookieLocaleResolverの挙動をオーバーライド */ | |
CookieLocaleResolver resolver = new MyCookieLocaleResolver(); | |
resolver.setDefaultLocale(Locale.JAPAN); | |
resolver.setCookieName("app.setting.locale"); | |
/* CookieLocaleResolverはデフォでcookieのpathを / にしてしまうのでアプリケーションのコンテキストパスにする */ | |
/* resolver.setCookiePath(servletContext.getContextPath()); */ | |
/* --> が、ContextPathがnullでされておらず、NullPointerException が起きてしまうのでここではやらない。 */ | |
return resolver; | |
} | |
class MyCookieLocaleResolver extends CookieLocaleResolver { | |
/* 実際にcookie作る時点でこのメソッドが呼ばれる都度contextPathを取得する */ | |
@Override | |
public String getCookiePath() { | |
String contextPath = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getContextPath(); | |
return contextPath; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
コンテキストパスがついた!
