1

我不确定这是否可能。当您单击“提交”按钮时,似乎有一种方法可以做到这一点。

private Button getButton(String id) 
{
    return new AjaxButton(id)
    {
            private static final long serialVersionUID = 1L;
            {
                setEnabled(true);
            }

            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) 
            {
                debug = "Beginning a process....";
                target.addComponent(debugLabel);

                //Perform the first process

                debug = "Beginning second process....";
                target.addComponent(debugLabel);

                //Perform the second process

                debug = "Finishing....";
                target.addComponent(debugLabel);

                //Perform the third process

                debug = "Done.";
                target.addComponent(debugLabel);
            }
            @Override
            protected void onError(AjaxRequestTarget target, Form form)
            {
                //NO-OP
            }
        };
    }
}

如果不可能,是否有替代多个实时更新的方法?我想要它,所以底部有一个状态标签,它会更新并告诉您在该方法中完成了多少进展。

4

2 回答 2

2

您必须在另一个线程中启动您希望收到通知的进程。然后,您可以使用有关状态的信息更新用户会话,这些信息将由绑定到标签的一些 ajax 行为定期检查。

在检票口 6 你也可以使用WebSocketBehavior

于 2012-07-18T20:16:27.113 回答
1

只需使用 AjaxTimerBehavior,它就会每 1-2 秒更新一次您的标签。

代码:

add(new AbstractAjaxTimerBehavior(Duration.seconds(1))
        {
            @Override
            protected void onTimer(AjaxRequestTarget target)
            {
                target.add(label);
            }
        });

显然,该解决方案使用了哑 AJAX 轮询,因此只建议在 Intranet 或其他低流量站点上使用它。

于 2012-07-19T09:26:59.470 回答