1

我开始尝试使用 Wicket AJAX 功能并希望实现 AjaxLink。

这是相关的标记/java 代码:

<a wicket:id="testlink"></a>
---
AjaxLink<Component> link = new AjaxLink<Component>("testlink") {
    @Override
    public void onClick(AjaxRequestTarget target) {
        System.out.println("called");
    }
};
add(link);

但是onClick- 方法永远不会被调用,我猜是因为生成的 HTML 看起来像这样:

<a wicket:id="testlink" id="testlink7" href="javascript:;"></a>

关于我做错了什么的任何想法?

4

3 回答 3

2

href="javascript:;"是因为 Wicket 6 使用 JavaScript 事件注册。在一些浏览器开发工具(如 Firefox)中查看您的网页。将检查器指向链接并读取它的 id,然后转到 head 部分并展开其中一个<script type= text/javascript></script>标签。在那里您应该找到链接的 id,并看到有一行点击事件附加到链接的 id。单击链接时会执行那里的 URL。

Firefox 开发工具的屏幕截图

于 2013-11-04T14:29:06.870 回答
0

感谢 Robert 澄清 Wicket 6 的 ajax 机制——我对这个主题相当陌生,你给我的见解帮助解决了这个问题。

实际上它是由一些 jQuery 不一致引起的,我还没有完全解开,显然同事在我们的不同 Wicket 模块中使用了不同的 jQuery 版本,并且不知何故,Wicket 使用的不是它附带的那个,而是一个错误的尝试附加事件时组件的监听器。

当删除不必要的旧 jQuery 库时,Wicket 开始正常工作 - 现在我只需要根据其他 jQuery 库再次工作来获取组件,但那是一个不同的故事 :)

于 2013-11-05T16:06:20.997 回答
0

在我的情况下,我删除了以下 onload on body 标记,并且 AjaxLink onclick 函数再次起作用。

<body onLoad="MM_preloadImages('template-image/searchbto.png');">
于 2015-02-06T10:06:10.677 回答