有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

计时器为web项目生成Java提醒

我需要一个web项目来构建一个提醒,显示输入日期和时间的消息。我不想使用任何插件或jar文件。我找到了代码,但是timer.schedule(task,date);中有一个错误

我也是java新手,不知道这是否是正确的方法

代码:

public String reminder(Model model, HttpServletRequest req, HttpServletResponse res) throws ParseException
{

    String myDate = "2012-06-09 17:43:20";

    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    Date date = (Date)formatter.parse(myDate);

    TimerTask task = YoTimes(model);
    Timer timer = new Timer();
    timer.schedule(task,date);

    return "/view";
}

private TimerTask YoTimes(Model model) 
{
    model.addAttribute("timerMsg", "Yo Timer");
    return null;
}

编辑

堆栈跟踪:

ERROR:java.lang.NullPointerException 
    at java.util.Timer.sched(Unknown Source) 
    at java.util.Timer.schedule(Unknown Source)

共 (2) 个答案

  1. # 1 楼答案

    private TimerTask YoTimes(Model model) 
    {
        model.addAttribute("timerMsg", "Yo Timer");
        return null; // ************
    }
    

    请看你回来的是什么

    因此,这将导致NPE也就不足为奇了。也许您希望返回实际的TimerTask对象。;-)

    因此,请创建并返回您的TimerTask:

    private TimerTask YoTimes(final Model model) 
    {
        model.addAttribute("timerMsg", "Yo Timer");
        return new TimerTask() {
           public void run() {
              // whatever code you want called by the timer
           }
        };
    }
    
  2. # 2 楼答案

    您的YoTimes方法返回null。它应该返回java.util.TimerTask的一个实例,以便您可以将其传递给Timer#schedule(TimerTask, Date)

    已编辑的yoTimes方法(注意,作为最佳实践/约定,Java方法应以小写字符开头):

    private TimerTask yoTimes(Model model) {
        model.addAttribute("timerMsg", "Yo Timer");
        return new MyTimerTask();
    }
    

    新创建的MyTimerTask类:

    public class MyTimerTask extends TimerTask {
        public void run() {
            // Whatever the task should be
        }
    }