如何在 Tapestry webapp 中设置 t5/core/datefield 的默认配置
How to set the default configuration for t5/core/datefield back in Tapestry webapp
我发现最新的 Tapestry5-jquery 4.1.2 在其模块 class.
中覆盖了核心日期字段
@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"));
}
我仍然想使用 Tapestry Core 中的默认值。
我怎样才能将它设置回我的网络应用程序中,该应用程序也使用 Tapestry5-jquery 库?现在我确实修改了 Tapestry-jquery 库代码,但应该有更简单的方法而不是修改外部库代码。
谢谢。
如您所见,JQueryModule
中的覆盖是通过对 ModuleManager
服务使用 mapped configuration 完成的。
与其他贡献一样,您可以使用 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));
}
执行此操作后不要忘记清除浏览器缓存。
我发现最新的 Tapestry5-jquery 4.1.2 在其模块 class.
中覆盖了核心日期字段@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"));
}
我仍然想使用 Tapestry Core 中的默认值。 我怎样才能将它设置回我的网络应用程序中,该应用程序也使用 Tapestry5-jquery 库?现在我确实修改了 Tapestry-jquery 库代码,但应该有更简单的方法而不是修改外部库代码。
谢谢。
如您所见,JQueryModule
中的覆盖是通过对 ModuleManager
服务使用 mapped configuration 完成的。
与其他贡献一样,您可以使用 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));
}
执行此操作后不要忘记清除浏览器缓存。