2016-05-06 10 views
0

私は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> 

件の検索結果ページ

enter image description here


コンソール

テストリスト:COLD
テストリスト:123
テストリスト:321
テストリスト:222
テストリスト:123123
試験リスト:123
試験リスト:123
テストリスト:1111111111111
テストリスト:123
I = 2

答えて

0

私はそれが一度だけ実行し、なぜ答えを得たと思います。 JSPはバックエンドで実行され、JavaScriptはフロントエンドで実行されるためです。 ウェブコンテナからサーブレットに変換されるときのように。
このオリジナルのJSPはこれを好きかもしれません。

cell1.innerHTML = <%=i%>; 
cell2.innerHTML = <%=list.get(i)%>; 

しかし、サーブレットは、私はそのような結果を得た理由です。この

cell1.innerHTML = 1; 
cell2.innerHTML = 123; 

ようなHTMLが生成されます。

<script language='javascript'> 
    var table = document.getElementById("myTable"); 
    var bound =<%=arrLen%>; 
    <% 
    for(int j=0; j<list.size(); j++) 
    { 
     %> 
     var row = table.insertRow(<%=j%>); 
     var cell1 = row.insertCell(0); 
     var cell2 = row.insertCell(1); 
     cell1.innerHTML = '<%=j+1%>'; 
     cell2.innerHTML = '<%=list.get(j)%>'; 
     <% 
    } 
    %> 
</script> 

ように、コードを書き換えるにする必要があります

関連する問題