Skip to content

Instantly share code, notes, and snippets.

@Winged-Git
Created October 22, 2020 05:07
Show Gist options
  • Save Winged-Git/6f39dbfd6ac07836a6432430b58020d3 to your computer and use it in GitHub Desktop.
Save Winged-Git/6f39dbfd6ac07836a6432430b58020d3 to your computer and use it in GitHub Desktop.
外部Jar化したコード修正版(BaseApplicationConfig.javaに変更はなし)
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;
}
}
}
@Winged-Git
Copy link
Author

コンテキストパスがついた!
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment