【问题标题】:Wicket 1.5 Javascript File in Body Tag身体标签中的 Wicket 1.5 Javascript 文件
【发布时间】:2011-11-03 10:51:12
【问题描述】:

我需要在正文中放置一个脚本标签,因为 javascript 在头部标签中不起作用。

从 Wicket 1.5 开始,不再支持以下代码:

add(new JavaScriptReference("wz_tooltip", new JavaScriptResourceReference(BaseTemplate.class, "wz_tooltip.js")));

这是因为 JavaScriptReference 类不再存在。

我显然不能使用新的renderHead 方法。

到目前为止我的解决方法:

WebMarkupContainer script = new WebMarkupContainer("script");
script.add(new AttributeAppender("type", Model.of("text/javascript")));
script.add(new AttributeAppender("src", Model.of("wz_tooltip.js")));
add(script);

真的很难看,除了它不起作用;找不到 javascript 文件。

还有其他解决方法或“正确”的方法吗?

【问题讨论】:

    标签: javascript wicket


    【解决方案1】:

    您是否尝试过将 urlFor 与资源引用一起使用?有点像..

    script.add(new AttributeAppender("src", urlFor(new JavaScriptResourceReference(BaseTemplate.class, "wz_tooltip.js"), null).toString())); 
    

    由于 Wicket 的复杂资源管理,我不希望您当前的方法能够开箱即用。此外,虽然可能有其他“正确”的方法来做事,但我经常发现 3rd-Party javascript 可能对放置很挑剔,对于某些脚本,我仍然需要使用这种方法。

    例如,我使用的一个脚本必须是页面上的最后一个元素。

    【讨论】:

    • 感谢您的回答!它现在找到资源。这是可编译的代码(ResourceReference 是抽象的,urlFor 给你一个 CharSequence):script.add(new AttributeAppender("src", urlFor(new JavaScriptResourceReference(BaseTemplate.class, "wz_tooltip.js"), null).toString()));
    • 使用可编译代码更新 - 我还没有迁移到 1.5,所以我没有意识到 ResourceReference 发生了如此大的变化。
    • 谁是脚本? WebMarkupContainer?
    • 有没有办法在 wicket 1.4 中做到这一点?
    • @yoav.str 是的,我还没有升级到 1.5。我相信根据上述讨论,类名是不同的。我相信您想直接使用 ResourceReference 。基本上,长话短说,这只需要一个基本的<script wicket:id="script" /> 并设置src。你可以用很多不同的方式来做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多