2013-02-23 84 views
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运行一次(),并生成新的acutalNumber。内部控制器我说:

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

而这就是工作,我有印刷actualNumber的第一个值我的jsp页面上。

问题是:即使生成新的编号(sysout works),页面上的信息也不会刷新。 我应该如何从randomNumbers bean接收新值?例如,当'actualNumber'发生变化或每隔5秒钟时,我想获得新的信息。

回答

1

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

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

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

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

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

+0

非常感谢您的回答。脚本有效。 不,我不得不用会话变量来挑战。这并不容易。 我已添加到jsp页面: <%@ page session =“true”%> 和注释到控制器: @SessionAttributes 但仍然值不更新。 我应该以不同的方式声明RandomNumbers bean吗?或者我错过了什么? – user2102598 2013-02-23 17:32:11

+0

好的,现在一切正常:)我有一个代码错误:( 再次感谢您的帮助 – user2102598 2013-02-23 17:55:52

+0

标记为答案,如果它的帮助。 – 2013-02-23 22:45:19