我想在页面上显示类似“log”的内容,我正在使用textarea。我有每秒运行的计时器并调用Test.getConsole(),但是一旦加载了jsp页面,它就不会刷新。 Test.getConsole()方法即使具有新文本也始终返回相同的值。当我刷新页面(F5)时,显示Test.getConsole()的新内容。如何使(F5)的过程自动化?我希望使用Test.getConsole()返回的正确文本实时更新我的文本区域。
JSP:
<html>
<head>
<title>MultiMine - Home</title>
<script>
function timer() {
document.getElementById("1").value = "<%=Test.getConsole()%>";
window.setTimeout("timer()", 1000);
}
</script>
</head>
<body>
<textarea id="1" name="output" style="width:1194px" rows="40"></textarea>
<script>
timer();
</script>
</body>
</html>
Java:
public static String console = "Console initializing...";
public static String getConsole() {
return console;
}
public static void startConsole() {
Timer t = new Timer();
TimerTask tt = new TimerTask() {
int i = 0;
public void run() {
try {
console = console + "\\r" + i;
i++;
} catch (Exception e) {
}
}
};
t.schedule(tt, 1000, 1000);
}
在textarea中,我可以看到唯一的“控制台初始化...”,我需要刷新(F5)才能看到“控制台初始化... 1 2 3 4等...”(定时器输出)。如何“更新”字符串?
答案 0 :(得分:0)
scriptlet&lt;%= Test.getConsole()%&gt;正在执行页面加载之前执行。 JSP以纯文本形式接收方法的初始值,因此Javascript实际上是
<script>
function timer() {
document.getElementById("1").value = "Console Initializing...";
window.setTimeout("timer()", 1000);
}
</script>
Javascript无法轻松调用Java代码。必须对页面发出新请求才能重新评估scriptlet。要自动化它,您需要使用Ajax。