当特定日期到达java或vaadin时显示通知

当特定日期到达java或vaadin时显示通知,java,service,notifications,vaadin,Java,Service,Notifications,Vaadin,我正在使用vaadin框架构建我的项目,我想在特定日期到来时显示通知,我有一个函数返回这个日期,我想知道当系统的日期达到这个计算日期时如何显示消息 //I'd like to display a notification when the system's date reaches this "date_main_levee" public Date getMainLevee(Date date_ouverture_plis, int duree_caution){ Date date_

我正在使用vaadin框架构建我的项目,我想在特定日期到来时显示通知,我有一个函数返回这个日期,我想知道当系统的日期达到这个计算日期时如何显示消息

//I'd like to display a notification when the system's date reaches this "date_main_levee"
public Date getMainLevee(Date date_ouverture_plis, int duree_caution){
    Date date_main_levee;
    Calendar c = Calendar.getInstance();
    c.setTime(date_ouverture_plis);
    c.add(Calendar.DATE, duree_caution);
    date_main_levee=c.getTime();

    return date_main_levee;
}
基本上,我正在寻找的是一个类似于Android的简单解决方案:

在vaadin中是否有这样的建议(java解决方案也会有所帮助,因为vaadin是一个java框架)

编辑

我的问题不是通知本身,而是运行和测试实际日期是否与我给出的日期参数相等的服务

编辑2:

我使用此代码,它在控制台中显示结果,但在UI中没有通知:

在该视图中,我有一个简单的按钮,当我单击该按钮时,任务应开始:

final Button annulerLC=new Button("Annuler");
annulerLC.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            // TODO Auto-generated method stub
            DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = dateFormatter.parse("2015-04-23 18:29:00");
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Timer timer = new Timer();

            timer.schedule(new CautionTask(), date);
        }
    });
TimerTask在这个单独的类中定义(它只显示一个通知):

}

我在控制台上得到了:success++,因此system.out.println会显示准确的结果,但是视图不会显示通知“success”

谢谢。

当您需要“实时”通知时,请在应用程序init()方法中启动一个后台线程,然后根据需要显示通知。 当然,您随后必须使用,因此通知被推送到客户端。还请阅读有关从其他线程访问UI的部分

当您不需要实时通知时,只需将检查代码添加到一些UI表单中,然后将其显示在那里。在这种情况下,不需要后台服务

你需要:

a) 因此,后台服务器线程中的更改被推送到客户端


b) 从后台线程/任务,因为这可能在另一个上下文中运行

对于我来说,不清楚您搜索什么。在vaadin7
Notification.show中(“这是标题”,“这是描述”,Notification.Type.WARNING\u消息)是您所需要的不,这不是我要找的,这显示了一个简单的通知,我的问题不是通知本身,而是运行并测试实际日期是否与我给出的日期参数相等的服务,当它相等时,我可以简单地使用通知。showWell我尝试了一个简单的代码,但UI中没有显示任何内容(请参阅udit2),@Andre你认为我需要添加一个推送插件吗?当从单独的线程更新时,你需要推送,否则不行。显示您的简单代码部分我已经复制了我的代码,虽然任务正在运行,但UI中没有显示通知。嗯,当我从一个视图切换到另一个视图时,会显示通知!!!我认为@push注释不起作用。您的任务是一个后台线程,因此您必须:a)启用push和b)同步访问Vaadin UI类。此外,您必须确保Notification.show()在应用程序的正确实例中运行(意味着可以访问UI)。在回复中查看我的编辑
   public class CautionTask extends TimerTask{

public void run()
{
    Notification.show("success");//Doesn't show anything
    System.out.println("success+++");//Works fine
}