Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结合JSP servlet和Javascript_Java_Javascript_Jsp - Fatal编程技术网

结合JSP servlet和Javascript

结合JSP servlet和Javascript,java,javascript,jsp,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)

我已经使用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++; %>
}

对于(i=0;i

即使使用,count变量也不会递增。我不明白为什么这段代码在循环中没有按照我的要求执行。有人对如何增加JSP Bean的计数有什么建议吗?

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

编辑:相反,使用服务器端代码构建JavaScript数组文本。我不太懂JSP,我的Java有点生疏,但这不管用吗

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

那是因为你在混合东西

  • 循环位于
    javascript
    中,变量
    count
    不存在(因为它是java)
  • 您在
  • 因此,如果您改为在java中使用循环,那么计数可以正常工作。例如:

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

    但是最好将javascript与JSP分开。这对mantain来说可能是一件痛苦的事情。

    我有点同意b1naryj,但您可以尝试在jsp中执行循环,只需用javascript编写数组分配,比如:

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

    这很难看,但是…

    任何人都不应该在JSP中使用scriptlet代码。这是一个90年代后期的成语,被发现丑陋、脆弱、难以维护。2型MVC已经风靡全球

    您应该专注于服务器端的工作。如果必须编写JSP,请使用JSTL


    我认为当前的最佳实践是使用HTML、CSS和JavaScript。使用HTTP Get/POST或AJAX调用从服务器端的服务获取数据。

    像这样将JS和代码混合在一起是不好的做法(在任何语言中)。JSP中的scriptlet代码是多么丑陋、可怕的东西啊。任何人都不应该再使用它。是的。但这只是Jared理解为什么他的代码不起作用的一个例子。谢谢你的评论,我添加了一个警告:)@duffymo,所以发布一个答案。我只关注他的问题,真的没有考虑推荐更好的。是的。。。但这就是解决办法:哈哈。。。我正在使用的弹出窗口不允许右键单击,也没有菜单栏。有一次我激活了菜单栏并查看了源代码。。现在我明白发生了什么…@Jard-是的,“查看源代码”是一个有用的工具。你只需要习惯于在页面发送到浏览器之前执行所有服务器端代码的想法。。我已经习惯了asp.net web表单和使用落后的代码。。这种将代码、javascript、scriplets和html混合在一个页面上的做法令人难以置信……对于阅读本文的读者来说,这可能是更好的途径。如果我能够实现这一点,我将在以后更新…我同意,不幸的是,我不是编写原始编程的人,目前是todem极点上的低级人,因此我需要一段时间才能对如何实现代码产生影响。。。此外,我相信我们对能够利用什么技术有限制。