2016-09-28 34 views
3

我收到了Apche瓷磚3和Spring MVC 4的警告:我沒有爲多語言支持添加任何額外的配置,但默認支持。任何人都可以幫助我禁用此選項來刪除我的網站中的此警告。禁用Apache瓷磚中的多語言選項3

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 

回答

4

您可以通過在TilesConfigurer編寫自己的DefinitionFactory實現和註冊同一禁用此選項。

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; 
    } 
} 

然後在寄存器中的上述定義因子類,在TilesConfigurer在情況下,使用彈簧是這樣的。

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;