在 Apache tiles 3 中禁用多语言选项
Disable multilingual option in Apache tiles 3
我收到关于 Apche tiles 3 和 Spring MVC 4 的警告 我没有为多语言支持添加任何额外配置,但它默认支持。任何人都可以帮助我禁用此选项以删除我网站中的此警告。
org.apache.tiles.request.locale.PostfixedApplicationResource.
<init> No supported matching language for locale "sw".
Using file:/opt/apache-tomcat-8.0.35/webapps/ROOT/WEB-INF/tiles/app-core_sw.xml as a non-localized resource path. see TILES-571
您可以通过编写自己的 DefinitionFactory
实现并在 TilesConfigurer
中注册来禁用此选项。
public class CustomLocaleDefinitionsFactory extends LocaleDefinitionsFactory {
/** {@inheritDoc} */
@Override
public Definition getDefinition(String name, Request tilesContext) {
Definition retValue;
Locale locale = null;
retValue = definitionDao.getDefinition(name, locale);
if (retValue != null) {
retValue = new Definition(retValue);
String parentDefinitionName = retValue.getExtends();
while (parentDefinitionName != null) {
Definition parent = definitionDao.getDefinition(parentDefinitionName, locale);
if (parent == null) {
throw new NoSuchDefinitionException("Cannot find definition '" + parentDefinitionName
+ "' ancestor of '" + retValue.getName() + "'");
}
retValue.inherit(parent);
parentDefinitionName = parent.getExtends();
}
}
return retValue;
}
}
然后在 class 中注册上面的定义因子,在 TilesConfigurer
中以防这样使用 spring。
TilesConfigurer configurer = new TilesConfigurer();
configurer.setDefinitions(new String[] { "/WEB-INF/layouts/tiles.xml",
"/WEB-INF/views/**/tiles.xml" });
configurer.setCheckRefresh(true);
configurer.setDefinitionsFactoryClass(CustomLocaleDefinitionsFactory.class);
return configurer;
有一个解决方法,只要禁用日志输出就可以了,如果你使用spring引导,这很容易:
logging.level.org.apache.tiles.request.locale.PostfixedApplicationResource=ERROR
我收到关于 Apche tiles 3 和 Spring MVC 4 的警告 我没有为多语言支持添加任何额外配置,但它默认支持。任何人都可以帮助我禁用此选项以删除我网站中的此警告。
org.apache.tiles.request.locale.PostfixedApplicationResource.
<init> No supported matching language for locale "sw".
Using file:/opt/apache-tomcat-8.0.35/webapps/ROOT/WEB-INF/tiles/app-core_sw.xml as a non-localized resource path. see TILES-571
您可以通过编写自己的 DefinitionFactory
实现并在 TilesConfigurer
中注册来禁用此选项。
public class CustomLocaleDefinitionsFactory extends LocaleDefinitionsFactory {
/** {@inheritDoc} */
@Override
public Definition getDefinition(String name, Request tilesContext) {
Definition retValue;
Locale locale = null;
retValue = definitionDao.getDefinition(name, locale);
if (retValue != null) {
retValue = new Definition(retValue);
String parentDefinitionName = retValue.getExtends();
while (parentDefinitionName != null) {
Definition parent = definitionDao.getDefinition(parentDefinitionName, locale);
if (parent == null) {
throw new NoSuchDefinitionException("Cannot find definition '" + parentDefinitionName
+ "' ancestor of '" + retValue.getName() + "'");
}
retValue.inherit(parent);
parentDefinitionName = parent.getExtends();
}
}
return retValue;
}
}
然后在 class 中注册上面的定义因子,在 TilesConfigurer
中以防这样使用 spring。
TilesConfigurer configurer = new TilesConfigurer();
configurer.setDefinitions(new String[] { "/WEB-INF/layouts/tiles.xml",
"/WEB-INF/views/**/tiles.xml" });
configurer.setCheckRefresh(true);
configurer.setDefinitionsFactoryClass(CustomLocaleDefinitionsFactory.class);
return configurer;
有一个解决方法,只要禁用日志输出就可以了,如果你使用spring引导,这很容易:
logging.level.org.apache.tiles.request.locale.PostfixedApplicationResource=ERROR