Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Genesys PGR
Genesys Backend
Commits
c5df1f6d
Commit
c5df1f6d
authored
Oct 18, 2013
by
Matija Obreza
Browse files
A more reasonable SessionLocaleResolver
parent
cc43fb9d
Changes
2
Show whitespace changes
Inline
Side-by-side
src/main/java/org/genesys2/spring/BetterSessionLocaleResolver.java
0 → 100644
View file @
c5df1f6d
/*
* Copyright 2002-2012 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.genesys2.spring
;
import
java.util.HashSet
;
import
java.util.Locale
;
import
java.util.Set
;
import
javax.servlet.http.HttpServletRequest
;
import
org.springframework.web.servlet.i18n.SessionLocaleResolver
;
/**
* Implementation of LocaleResolver that uses a locale attribute in the user's
* session in case of a custom setting, with a fallback to the specified default
* locale or the request's accept-header locale.
*
* <p>
* This is most appropriate if the application needs user sessions anyway, that
* is, when the HttpSession does not have to be created for the locale.
*
* <p>
* Custom controllers can override the user's locale by calling
* {@code setLocale}, e.g. responding to a locale change request.
*
* @author Juergen Hoeller
* @author Matija Obreza
*
* @see #setDefaultLocale
* @see #setLocale
*/
public
class
BetterSessionLocaleResolver
extends
SessionLocaleResolver
{
private
Set
<
String
>
supportedLocales
=
new
HashSet
<
String
>();
public
void
setSupportedLocales
(
Set
<
String
>
supportedLocales
)
{
this
.
supportedLocales
=
supportedLocales
;
}
public
Set
<
String
>
getSupportedLocales
()
{
return
supportedLocales
;
}
/**
* Determine the default locale for the given request, Called if no locale
* session attribute has been found.
* <p>
* This implementation returns the request's accept-header locale if listed
* in the {@link #supportedLocales} , else falls back to the specified
* default locale.
*
* @param request
* the request to resolve the locale for
* @return the default locale (never {@code null})
* @see #setDefaultLocale
* @see javax.servlet.http.HttpServletRequest#getLocale()
*/
protected
Locale
determineDefaultLocale
(
HttpServletRequest
request
)
{
Locale
defaultLocale
=
request
.
getLocale
();
if
(
defaultLocale
!=
null
&&
!
supportedLocales
.
contains
(
defaultLocale
.
getLanguage
()))
{
// reset request locale if not on the list of supported locales
defaultLocale
=
null
;
}
if
(
defaultLocale
==
null
)
{
defaultLocale
=
getDefaultLocale
();
}
return
defaultLocale
;
}
}
src/main/resources/spring/servlet.xml
View file @
c5df1f6d
...
...
@@ -95,8 +95,16 @@
</mvc:interceptors>
<!--Locale resolver-->
<bean
name=
"localeResolver"
class=
"org.
springframework.web.servlet.i18n.
SessionLocaleResolver"
>
<bean
name=
"localeResolver"
class=
"org.
genesys2.spring.Better
SessionLocaleResolver"
>
<property
name=
"defaultLocale"
value=
"en"
/>
<property
name=
"supportedLocales"
>
<set>
<value>
en
</value>
<value>
es
</value>
<value>
fa
</value>
<!-- <value>sl</value> -->
</set>
</property>
</bean>
</beans>
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment