来自客户端的 Wicket ajax 调用导致错误

Wicket ajax call from client causes error

一段时间后,我的客户希望我们提示用户可能与服务器保持连接。我放置了一个 AbstractAjaxBehavior,将 URL 传递给客户端并发出 ajax 请求:

Wicket.Ajax.ajax({u: document._sessionKeepAliveUrl});

URL中的值有:

./.?3-1.IBehaviorListener.0-

一个断点告诉我行为的 onrequest 被调用。但是后来我在客户端收到以下错误:

Wicket.Ajax:  Wicket.Ajax.Call.failure: Error while parsing response: TypeError: Cannot read properties of null (reading 'getElementsByTagName')

所以这个解决方案大部分都有效。该行为对响应没有任何作用。我究竟做错了什么。请注意,这是 Wicket 6(我们的客户不想花时间进行升级,因为他们还没有决定我们的下一个框架)。

您需要在属性中添加"wr": false

Wicket.Ajax.ajax({u: document._sessionKeepAliveUrl, "wr": false});

wr 代表“是 Wicket Response”[1]。它告诉 Wicket Ajax/JS 是否应该尝试解释 Ajax 响应。

默认情况下 Wicket.Ajax.get/post() 处理由 AbstractDefaultAjax 行为生成的 XML 响应,但在您的情况下,您使用其父项 - AbstractAjax行为,可能会产生任何一种反应,甚至像你的情况一样没有反应。

  1. https://github.com/apache/wicket/blob/3a1a614c1bce68f5eb4e62ae064b48c7bca508df/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java#L69