我已经使用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的计数有任何建议?
答案 0 :(得分:2)
那是因为你在混合东西。
javascript
且变量count
不存在(因为它的java)<% count++ %>
因此,如果您更改为在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) %>;