1

我是 Spring 和 MVC 的新手,但我有一个问题要解决。我不知道在这种情况下什么是正确的方法。

我有课:

public class RandomNumbers
extends TimerTask

{ 
private Random random;
private int actualNumber;

public RandomNumbers(  )
{    
    this.random = new Random();
}

@Override
public void run()
{
    actualNumber =
        random.nextInt( 100 );        
    System.out.println( actualNumber );
}

public int getActualNumber()
{
return actualNumber;
}
}

这很好用。我从这个类和计划任务中创建了新的 bean。例如。每 2s run() 执行一次并生成新的 acutalNumber。我添加了内部控制器:

model.addAttribute( "actualNumber", randomNumbers.getActualNumber() );

这很有效,我在我的jsp页面上打印了actualNumber的第一个值。

问题是:即使生成了新号码(sysout 有效),页面上的信息也不会刷新。我应该如何从 randomNumbers bean 接收新值?例如,我想在“actualNumber”更改时或每 5 秒获取新信息。

4

1 回答 1

1

当用户看到 JSP 页面的输出时,他们只是看到了从页面生成的 HTML。为了使其动态化,浏览器必须“知道”才能获得新值。

例如,您的页面上可能有一些 javascript,它会不断刷新整个页面。你可以这样做:

<head>
<script type="text/JavaScript">
function timedRefresh() {   
  setTimeout("location.reload(true);",2000); 
}
</script>
</head>
<body onload="JavaScript:timedRefresh(5000);">
...

您的下一个问题将是:如何获取更新后的值?您的后台进程可以简单地将新值更新为会话变量。然后,该页面可以始终从该会话变量中获取值。

这可能会引发更多问题,但我希望它能让你走上正确的道路。

于 2013-02-23T16:21:41.470 回答