Wicket - 在回调结果后更新表单

时间:2017-01-24 21:05:24

标签: java wicket

当我尝试使用回调操作提供的结果更新表单时,我遇到了问题。这个问题是由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;

1 个答案:

答案 0 :(得分:0)

您似乎正在进行异步调用。 Wicket不支持挂起HTTP线程,因此您有以下选项:

  1. 阻止HTTP线程并等待异步服务的响应。例如。您可以在异步调用后使用java.util.concurrent.CountDownLatch await(),在回调方法中使用countDown()。仅当您确定异步调用快速时才使用此方法!

  2. 使用org.apache.wicket.ajax.AbstractAjaxTimerBehavior或其专精org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehaviorLong polling。我们的想法是你启动异步调用,然后每隔N ms /秒,Wicket将进行一次新的Ajax调用,以检查是否有响应并进行渲染。

  3. 使用Wicket Native WebSocket在异步调用可用时立即推送结果。