Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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使用javascript变量_Java_Javascript_Jsp - Fatal编程技术网

为jsp使用javascript变量

为jsp使用javascript变量,java,javascript,jsp,Java,Javascript,Jsp,我的代码如下: <% ArrayList<Item> itemList = new ArrayList<Item>(); itemList = projr.getObjects(projectID); if (itemList.size() != 0) { %> <script type="text/javascript"> window.onload = function() { for(var i = 0;i < <%=itemL

我的代码如下:

<%
ArrayList<Item> itemList = new ArrayList<Item>();
itemList = projr.getObjects(projectID);
if (itemList.size() != 0) {
%>

<script type="text/javascript">
window.onload = function() {
for(var i = 0;i < <%=itemList.size()%>;i++){
    var azimuth=0;
    azimuth = <%=itemList.get(i).getAzimuth()%>;
</script>

<%
}
%>

window.onload=函数(){
对于(变量i=0;i<;i++){
方位角=0;
方位=;
基本上如您所见,由于某些原因,我需要在javascript中执行for循环。但是,我不能在jsp标记中使用javascript中声明的变量“i”。因此,我想知道是否有任何解决方法

我尝试将“I”存储为cookie,并尝试通过执行smth在jsp中检索它,如:

azimuth = <%=itemList.get(Integer.parseInt((request.getCookies())[0].getValue())).getAzimuth()%>;
方位=;
然而,遗憾的是,这不起作用。此外,我曾想过使用隐藏的输入字段来存储“I”,但我认为它不会像a发出请求那样起作用。getParameter(输入名称),我不会得到任何东西,因为我没有提交任何东西。我这样说对吗


如果你们能在这里帮助我,我将不胜感激=]

您应该用JSP/Java而不是JavaScript执行for循环

<%
ArrayList<Item> itemList = new ArrayList<Item>();
itemList = projr.getObjects(projectID);
if (itemList.size() != 0) {
%>

<script type="text/javascript">
window.onload = function() {
    <%
    for(int i = 0; i itemList.size(); i++) {
    %>
    var azimuth=0;
    azimuth = <%= itemList.get(i).getAzimuth()%>; // Note: this will overwrite the original value on every loop. Not sure what you want, I've just make the code to work.
    <%
    }
    %>
</script>

<%
}
%>

window.onload=函数(){
方位角=0;
方位=;//注意:这将覆盖每个循环上的原始值。不确定您想要什么,我只是让代码正常工作。
也就是说,使用scriptlets是一个很好的选择。我建议您看看JSTL/EL,或者最终看看Ajax+JSON

下面是一个以JSTL/EL为目标的示例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:if test="${not empty itemList}">
    <script>
        window.onload = function() {
             <c:forEach items="${itemList}" var="item">
                 var azimuth = 0;
                 azimuth = ${item.azimuth};
             </c:forEach>
        }
    </script>
</c:if>

window.onload=函数(){
方位角=0;
方位角=${item.azirmation};
}
再一次,您在每次迭代中都会覆盖方位角,但在原始问题中也会这样做,所以您可能知道自己在做什么。我只是想知道。

这是怎么回事:

<%
ArrayList<Item> itemList = new ArrayList<Item>();
itemList = projr.getObjects(projectID);
if (itemList.size() != 0) {
%>

<script type="text/javascript">
window.onload = function() {
<%for(Item i : itemList){%>
    var azimuth=0;
    azimuth = <%=i.getAzimuth()%>;
<%}%>
</script>

<%
}
%>

window.onload=函数(){
方位角=0;
方位=;

只是为了确保:您知道JSP是在服务器上执行的,服务器会生成HTML(+JS),然后在客户端对其进行解释?我的方法是将列表序列化为JSON并将其转储到javascript块中。如果您这样分配数组列表,则会更好:list itemList new ArrayList();只是一个想法=)