2017-02-06 1 views
2

Как я узнал, что последний Tapestry5-jquery 4.1.2 переопределяет базовое поле даты через его класс модуля.Как установить конфигурацию по умолчанию для t5/core/datefield в Tapestry webapp

@Contribute(ModuleManager.class) 
    public static void setupComponentsShims(
      MappedConfiguration<String, Object> configuration, 
      @Inject @Path("/META-INF/modules/tjq/datefield.js") Resource datefield, 
      @Inject @Path("${jquery.assets.root}/vendor/jquery.mousewheel.js") Resource jquerymousewheel, 
      @Symbol(JQuerySymbolConstants.ADD_MOUSEWHEEL_EVENT) boolean mouseWheelIncluded) { 

     **configuration.add("t5/core/datefield", 
     new JavaScriptModuleConfiguration(datefield));** 

     if (mouseWheelIncluded) 
      configuration.add("vendor/jquerymousewheel", 
        new JavaScriptModuleConfiguration(jquerymousewheel) 
          .dependsOn("jquery")); 
    } 

Я все еще хочу использовать по умолчанию один из ядра гобелена. Как я могу установить его обратно в своем веб-приложении, которое также использует библиотеку Tapestry5-jquery? На данный момент я модифицировал код библиотеки Tapestry-jquery, но должен быть проще, а не изменять внешний код lib.

Спасибо.

ответ

2

Как вы можете видеть, это переопределение в JQueryModule осуществляется с помощью mapped configuration в службу ModuleManager.

Как и другие взносы, вы можете переопределить этот с configuration.override(...), т.е .:

@Contribute(ModuleManager.class) 
public void useCoreDateField(
     MappedConfiguration<String, Object> configuration, 
     AssetSource assetSource) 
{ 
    // Load core javascript for the component 
    Resource dateField = assetSource.resourceForPath(
     "/META-INF/modules/t5/core/datefield.js"); 

    // Override the contribution 
    configuration.override("t5/core/datefield", 
     new JavaScriptModuleConfiguration(dateField)); 
} 

Не забудьте очистить кэш браузера после того, как вы это делаете.

Смежные вопросы