私はModel2を使ってDynamic Web Projectを練習しています。 JavaScriptのforループの中でJSPスクリプトレットを使用すると、それがわかります。 スクリプトレット<%...%>は一度だけ実行されます。
JS forループと同じくらい多くの時間を実行する必要があると思いました。どうしたの?それを解決するために私は何をすべきですか?JSのループ内のJSPスクリプトレット
焦点:
<script language='javascript'>
var table = document.getElementById("myTable");
for(i=1;i<=<%=arrLen%>;i++)
{
var row = table.insertRow(i-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = <%=i%>;
cell2.innerHTML = <%=list.get(i)%>;
<% i=i+1;
System.out.println("i="+i);%>
}
</script>
詳細:
JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ page import=" java.util.List,
java.util.ArrayList" %>
<div>
<h1>Result</h1>
<table id="myTable"></table>
<br>
</div>
<p>There are <%=request.getAttribute("result_number") %> results.</p>
<%
int arrLen = (int)request.getAttribute("result_number");
List<String> list = new ArrayList<String>();
int i;
for(i=1;i<=arrLen;i++)
{
list.add((String)request.getAttribute("result"+i));
System.out.println("Test list:"+list.get(i-1));
}
i=1;
%>
<script language='javascript'>
var table = document.getElementById("myTable");
for(i=1;i<=<%=arrLen%>;i++)
{
var row = table.insertRow(i-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = <%=i%>;
cell2.innerHTML = <%=list.get(i)%>;
<% i=i+1;
System.out.println("i="+i);%>
}
</script>
</body>
</html>
件の検索結果ページ
コンソール
テストリスト:COLD
テストリスト:123
テストリスト:321
テストリスト:222
テストリスト:123123
試験リスト:123
試験リスト:123
テストリスト:1111111111111
テストリスト:123
I = 2