2013-02-23 88 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