【问题标题】:Wicket AjaxFallbackLink behaviourWicket AjaxFallbackLink 行为
【发布时间】:2016-06-16 13:43:41
【问题描述】:

我将 AjaxFallbackLink 组件用于 Ajax 链接。当我将鼠标悬停在链接上时,URL 看起来类似于 ./myPage?1-1.ILinkListener-xxx。但是,当我实际单击该链接时,Ajax 请求类似于:./myPage?1-1.IBehaviorListener-xxx。

Wicket JavaScript 似乎以某种方式将 URL 从 ILinkListener 更改为 IBehaviorListener。不知道是不是这样,为什么会这样?

有时在某些情况下,浏览器发出请求时,URL中的ILinkListener没有变为IBehaviorListener,导致回调函数中参数AjaxRequestTarget target为null时出现NullPointerException。我无法重现这一点。只是想知道哪些浏览器设置可能导致这种情况发生。非常感谢。

【问题讨论】:

    标签: wicket


    【解决方案1】:

    这两个网址都是正确的。

    第一个静态链接地址“./myPage?1-1.ILinkListener-xxx.”是链接的通用链接地址,以防它调用 URL并处理链接。

    第二个AJAX 链接 地址“./myPage?1-1.IBehaviorListener-xxx”是一个通用的JavaScript/AJAX 行为。如果 JavaScript 正常工作,JavaScript 会作为 onclick 事件附加(请参阅 https://api.jquery.com/click/ 处的 jQuery click() 函数)并处理链接,那么它不应继续处理来自 HREF 属性的 URL。

    到目前为止,您希望在单击链接时只请求其中一个 URL。但是在没有 AJAX 的 AjaxFallbackLink 的情况下,onClick(AjaxRequestTarget) 被调用为 onClick(null),如果您依赖现有的 AjaxRequestTarget 对象,则会导致 NPE,但不能保证。

    当无法重现时,您问题的最后一部分不清楚。但是 Wicket 使用 jQuery,如果在 HTML 中添加 jQuery 库,可能会出现版本冲突。

    http://apache-wicket.1842946.n4.nabble.com/AjaxFallbackLink-s-onClick-with-null-AjaxRequestTarget-migrating-1-4-to-6-td4652143.html 有类似问题的更多详细信息

    【讨论】:

    • 谢谢马丁。正如您所提到的,在 AjaxFallbackLink 的情况下可能没有 AJAX。这正是我的问题的最后一部分,如何在现代浏览器中实现这一点,即没有 AJAX 但启用了 JavaScript?以防万一你知道怎么做。
    • 这可能是由不同的问题引起的,例如如果您添加其他行为或停止 JS 事件传播或类似的事情,则覆盖或重复对 jQuery(JS 库)的引用或替换链接上的 onClick 函数。我会检查:1)HTML 标头中是否只有一个 jQuery,2)您的链接上没有其他行为吗?3)HTML 标头中是否只有一个 onClick 事件附加到您的链接? 4) 是否所有 HTML 链接都没有附加通用 onclick 事件?
    • 在我的情况下,Ajax 行为是预期的,并且确实在我的所有浏览器中都按预期工作;但对于某些用户来说,根据 Tomcat 访问日志使用通用链接。因此,唯一的区别在于浏览器方面。我现在尝试禁用 Ajax,但保持启用 JavaScript。我稍后再谈。
    • 好的,看完你的评论:如果没有加载jQuery(比如网络问题),就用简单的HTML链接代替。
    • 我明白了。听起来就是这样。谢谢马丁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多