Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
f61d728d
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f61d728d
编写于
11月 13, 2019
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fallback Locale other than the system Locale through setDefaultLocale
Closes gh-23977
上级
f4c847b7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
56 addition
and
5 deletion
+56
-5
spring-context/src/main/java/org/springframework/context/support/AbstractResourceBasedMessageSource.java
...k/context/support/AbstractResourceBasedMessageSource.java
+41
-1
spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java
...ontext/support/ReloadableResourceBundleMessageSource.java
+13
-3
spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java
...ramework/context/support/ResourceBundleMessageSource.java
+2
-1
未找到文件。
spring-context/src/main/java/org/springframework/context/support/AbstractResourceBasedMessageSource.java
浏览文件 @
f61d728d
/*
* Copyright 2002-201
8
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -17,6 +17,7 @@
package
org.springframework.context.support
;
import
java.util.LinkedHashSet
;
import
java.util.Locale
;
import
java.util.Set
;
import
org.springframework.lang.Nullable
;
...
...
@@ -43,6 +44,9 @@ public abstract class AbstractResourceBasedMessageSource extends AbstractMessage
private
boolean
fallbackToSystemLocale
=
true
;
@Nullable
private
Locale
defaultLocale
;
private
long
cacheMillis
=
-
1
;
...
...
@@ -143,6 +147,7 @@ public abstract class AbstractResourceBasedMessageSource extends AbstractMessage
* {@code java.util.ResourceBundle}. However, this is often not desirable
* in an application server environment, where the system Locale is not relevant
* to the application at all: set this flag to "false" in such a scenario.
* @see #setDefaultLocale
*/
public
void
setFallbackToSystemLocale
(
boolean
fallbackToSystemLocale
)
{
this
.
fallbackToSystemLocale
=
fallbackToSystemLocale
;
...
...
@@ -152,11 +157,46 @@ public abstract class AbstractResourceBasedMessageSource extends AbstractMessage
* Return whether to fall back to the system Locale if no files for a specific
* Locale have been found.
* @since 4.3
* @deprecated as of 5.2.2, in favor of {@link #getDefaultLocale()}
*/
@Deprecated
protected
boolean
isFallbackToSystemLocale
()
{
return
this
.
fallbackToSystemLocale
;
}
/**
* Specify a default Locale to fall back to, as an alternative to falling back
* to the system Locale.
* <p>Default is to fall back to the system Locale. You may override this with
* a locally specified default Locale here, or enforce no fallback locale at all
* through disabling {@link #setFallbackToSystemLocale "fallbackToSystemLocale"}.
* @since 5.2.2
* @see #setFallbackToSystemLocale
* @see #getDefaultLocale()
*/
public
void
setDefaultLocale
(
@Nullable
Locale
defaultLocale
)
{
this
.
defaultLocale
=
defaultLocale
;
}
/**
* Determine a default Locale to fall back to: either a locally specified default
* Locale or the system Locale, or {@code null} for no fallback locale at all.
* @since 5.2.2
* @see #setDefaultLocale
* @see #setFallbackToSystemLocale
* @see Locale#getDefault()
*/
@Nullable
protected
Locale
getDefaultLocale
()
{
if
(
this
.
defaultLocale
!=
null
)
{
return
this
.
defaultLocale
;
}
if
(
this
.
fallbackToSystemLocale
)
{
return
Locale
.
getDefault
();
}
return
null
;
}
/**
* Set the number of seconds to cache loaded properties files.
* <ul>
...
...
spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java
浏览文件 @
f61d728d
/*
* Copyright 2002-201
8
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -237,6 +237,7 @@ public class ReloadableResourceBundleMessageSource extends AbstractResourceBased
if
(
mergedHolder
!=
null
)
{
return
mergedHolder
;
}
Properties
mergedProps
=
newProperties
();
long
latestTimestamp
=
-
1
;
String
[]
basenames
=
StringUtils
.
toStringArray
(
getBasenameSet
());
...
...
@@ -253,6 +254,7 @@ public class ReloadableResourceBundleMessageSource extends AbstractResourceBased
}
}
}
mergedHolder
=
new
PropertiesHolder
(
mergedProps
,
latestTimestamp
);
PropertiesHolder
existing
=
this
.
cachedMergedProperties
.
putIfAbsent
(
locale
,
mergedHolder
);
if
(
existing
!=
null
)
{
...
...
@@ -279,10 +281,15 @@ public class ReloadableResourceBundleMessageSource extends AbstractResourceBased
return
filenames
;
}
}
// Filenames for given Locale
List
<
String
>
filenames
=
new
ArrayList
<>(
7
);
filenames
.
addAll
(
calculateFilenamesForLocale
(
basename
,
locale
));
if
(
isFallbackToSystemLocale
()
&&
!
locale
.
equals
(
Locale
.
getDefault
()))
{
List
<
String
>
fallbackFilenames
=
calculateFilenamesForLocale
(
basename
,
Locale
.
getDefault
());
// Filenames for default Locale, if any
Locale
defaultLocale
=
getDefaultLocale
();
if
(
defaultLocale
!=
null
&&
!
defaultLocale
.
equals
(
locale
))
{
List
<
String
>
fallbackFilenames
=
calculateFilenamesForLocale
(
basename
,
defaultLocale
);
for
(
String
fallbackFilename
:
fallbackFilenames
)
{
if
(!
filenames
.
contains
(
fallbackFilename
))
{
// Entry for fallback locale that isn't already in filenames list.
...
...
@@ -290,7 +297,10 @@ public class ReloadableResourceBundleMessageSource extends AbstractResourceBased
}
}
}
// Filename for default bundle file
filenames
.
add
(
basename
);
if
(
localeMap
==
null
)
{
localeMap
=
new
ConcurrentHashMap
<>();
Map
<
Locale
,
List
<
String
>>
existing
=
this
.
cachedFilenames
.
putIfAbsent
(
basename
,
localeMap
);
...
...
spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java
浏览文件 @
f61d728d
...
...
@@ -461,7 +461,8 @@ public class ResourceBundleMessageSource extends AbstractResourceBasedMessageSou
@Override
@Nullable
public
Locale
getFallbackLocale
(
String
baseName
,
Locale
locale
)
{
return
(
isFallbackToSystemLocale
()
?
super
.
getFallbackLocale
(
baseName
,
locale
)
:
null
);
Locale
defaultLocale
=
getDefaultLocale
();
return
(
defaultLocale
!=
null
&&
!
defaultLocale
.
equals
(
locale
)
?
defaultLocale
:
null
);
}
@Override
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录