结合JSP servlet和Javascript

时间:2012-02-10 00:21:16

标签: java javascript jsp

我已经使用ASP.NET几年了,现在正在使用JSP,Struts和Java开发项目,所以我对此很新。

我在JavaScript函数中有一个for循环,看起来像这样:

<% int count=0; %>
for(i = 0; i < arrayCount; i++){
   jsArray[i] = <%= myBeanArrayList.get(count) %>;
   alert("i = " + i + "count = " + count);
   <% count++; %>
}

即使我使用&lt;%count = count + 1%&gt;,count变量也不会递增。我不明白为什么那段代码在循环中没有按照我想要的那样做。有没有人对如何增加JSP Bean的计数有任何建议?

4 个答案:

答案 0 :(得分:2)

那是因为你在混合东西。

  1. 您的循环位于javascript且变量count不存在(因为它的java)
  2. 您在<% count++ %>
  3. 中增加了一次计数

    因此,如果您更改为在java中使用循环,则计数可以正常工作。例如:

    <% for( int i = 0; i < ???; i++ ) { %>
     alert('<%= i %>');
    <% } %>
    

    但是最好将您的javascript与JSP分开。这可能是一种痛苦。

答案 1 :(得分:1)

我有点同意b1naryj,但你可以尝试在jsp中进行循环,然后在javascript中编写数组赋值,如:

<% 
for(i = 0; i < arrayCount; i++){
   %>jsArray[<%i%>] = <%= myBeanArrayList.get(i) %>;
<%}%>

这很难看,... ...

答案 2 :(得分:1)

没有人应该在JSP中使用scriptlet代码。这是一个90年代后期的成语,被发现是丑陋,脆弱,难以维护。 Model-2 MVC席卷了整个领域。

你应该专心做服务器端的事情。如果必须编写JSP,请使用JSTL。

我认为目前的最佳做法是使用HTML,CSS和JavaScript。使用HTTP GET / POST或AJAX调用从服务器端的服务获取数据。

答案 3 :(得分:0)

您只是在客户端而不是服务器上循环。服务器代码只执行一次。因此,对于JavaScript循环的每次迭代,您使用相同的值 - myBeanArrayList.get(0)。查看源代码以查看生成的HTML代码,这可能有助于澄清问题。

编辑:而是使用服务器端代码构建JavaScript数组文字。我真的不懂JSP,而且我的Java有点生疏,但这不会起作用吗?

var jsArray = <%= new JSONArray(myBeanArrayList) %>;