1

私はSpringとMVCの初心者ですが、解決すべき問題が1つあります。この場合、何が正しいアプローチなのかわかりません。

授業がある:

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 を作成しました。例えば。2 秒ごとに 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 に答える