我将AjaxFallbackLink组件用于Ajax链接。当我将鼠标悬停在链接上时,URL看起来像./myPage?1-1.ILinkListener-xxx。然而,当我实际点击链接时,Ajax请求看起来像:./ myPage?1-1 .IBehaviorListener-xxx。
似乎Wicket JavaScript以某种方式将URL从ILinkListener更改为IBehaviorListener。不知道是不是这样,为什么会这样?
有时在某些情况下,当浏览器发出请求时,URL中的ILinkListener不会更改为IBehaviorListener,这会导致NullPointerException,因为回调函数中的参数AjaxRequestTarget目标为null。我还没有能够重现这一点。只是想知道什么浏览器设置可能导致这种情况发生非常感谢。
答案 0 :(得分:4)
这两个网址都是正确的。
第一个静态链接地址' ./ 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
到目前为止,您只希望在点击链接时只请求其中一个网址。但是在AjaxFallbackLink的情况下,当没有AJAX时,onClick(AjaxRequestTarget)被调用为onClick(null),如果依赖现有的AjaxRequestTarget对象,它会导致NPE,但不能保证这一点。
如果无法复制,问题的最后部分并不清楚。但是Wicket使用jQuery,如果你在HTML中添加jQuery库,可能会有版本冲突。
上有类似问题的更多细节