【问题标题】:Insert Wicket value to a JavaScript function in Java将 Wicket 值插入 Java 中的 JavaScript 函数
【发布时间】:2012-09-11 16:33:59
【问题描述】:

我正在使用 HTML 和 Wicket 编写一个网络应用程序。

在我的 HTML 页面中,我有一个小的警报脚本,我需要检票口将一个值插入到警报的消息中。我的代码是:

HTML 代码:

<script>
   function version(){
   alert(<sub wicket:id="version">);
   } 
</script>
<img class="logo" src="images/logo.png" alt="" width="68" height="21" onclick="version()"/>

Java:

add(new Label("version","1.0.0");

但这不起作用。

【问题讨论】:

    标签: java javascript html wicket


    【解决方案1】:

    Wicket 不会处理 &lt;script&gt; 内的任何内容。但是您可以通过页面类(或任何其他 Component)中的标头贡献添加 JavaScript 函数。

    检票口 1.5:

    @Override
    public void renderHead(IHeaderResponse response) {
        super.renderHead(response);
        response.renderJavaScript("function version(){alert('" + "1.0.0" + "');}", "version");
    }
    

    检票口 6.0:

    @Override
    public void renderHead(IHeaderResponse response) {
        super.renderHead(response);
        response.render(JavaScriptHeaderItem.forScript("function version(){alert('" + "1.0.0" + "');}", "version"));
    }
    

    另一种方法是渲染输出函数的Label

    add(new Label("script", "function version(){alert('1.0.0');}").setEscapeModelStrings(false));
    

    在你的标记中

    <script wicket:id="script" />
    <img class="logo" src="images/logo.png" alt="" width="68" height="21" onclick="version()"/>
    

    【讨论】:

    • setEscapeModelStrings 设置组件是否必须将其模型中的“合理”字符替换为其相关的 HTML 代码。这样做是出于安全原因,即防止用户将恶意代码注入我们的页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多