为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();只是一个想法=)