当我尝试使用回调操作提供的结果更新表单时,我遇到了问题。这个问题是由Wicket单例线程引起的,我不明白如何实现解决方案。 我需要更新的代码如下。
SELECT t1, t2, (TIMESTAMPDIFF(MINUTE, t1, t2) - TIMESTAMPDIFF(DAY, t1, t2)*660) FROM
(SELECT CASE WHEN t1 < STR_TO_DATE(concat(date_format(t1, '%Y-%m-%d'), ' 09:00:00'), '%Y-%m-%d %h:%i:%s')
THEN STR_TO_DATE(concat(date_format(t1, '%Y-%m-%d'), ' 09:00:00'), '%Y-%m-%d %h:%i:%s')
ELSE t1
END AS t1 FROM test) test1,
(SELECT CASE WHEN t2 > STR_TO_DATE(concat(date_format(t2, '%Y-%m-%d'), ' 22:00:00'), '%Y-%m-%d %h:%i:%s')
THEN STR_TO_DATE(concat(date_format(t2, '%Y-%m-%d'), ' 22:00:00'), '%Y-%m-%d %h:%i:%s')
ELSE t2
END AS t2 FROM test) test2;
答案 0 :(得分:0)
您似乎正在进行异步调用。 Wicket不支持挂起HTTP线程,因此您有以下选项:
阻止HTTP线程并等待异步服务的响应。例如。您可以在异步调用后使用java.util.concurrent.CountDownLatch
await()
,在回调方法中使用countDown()
。仅当您确定异步调用快速时才使用此方法!
使用org.apache.wicket.ajax.AbstractAjaxTimerBehavior
或其专精org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior
来Long polling
。我们的想法是你启动异步调用,然后每隔N ms /秒,Wicket将进行一次新的Ajax调用,以检查是否有响应并进行渲染。
使用Wicket Native WebSocket在异步调用可用时立即推送结果。