<%for (String st : geocodePhoto.keySet()) {%>
alert(<%=st%>); // not work
alert(<%=geocodePhoto.get(st).getX()%>); // work fine
alert(<%=geocodePhoto.get(st).getY()%>); // work fine
alert(<%=geocodePhoto.get(st).getDate()%>); // not work
<%}%>
getX 返回 double 值,getDate 返回字符串值,如 'yy:mm:dd hh:mm:ss'
st 具有相同的形式“yy:mm:dd hh:mm:ss”
2,3 行警报工作正常,但 1,4 行警报不起作用
出了什么问题?
最佳答案
<%= %>
JSP 中的标记的行为就好像它调用 String.valueOf()
以标记中的表达式作为参数,并将返回值写入输出。因此,您生成的 JavaScript 源代码可能如下所示:
alert(13:11:23 10:30:17);
alert(-0.06);
alert(51.5);
alert(13:11:23 10:30:17);
您正在尝试将文本传递给第一次和最后一次调用 alert
,但您没有将文本放在引号中 - 因此,您会收到语法错误。中间的两个调用将数字写入 JavaScript 源代码 - 由于数字常量是有效的 JavaScript,因此它们无需引用即可工作。
因此,您的 JSP 代码应如下所示:
alert("<%=st%>");
alert(<%=geocodePhoto.get(st).getX()%>);
alert(<%=geocodePhoto.get(st).getY()%>);
alert("<%=geocodePhoto.get(st).getDate()%>");
关于java - JSP 中的字符串在 JavaScript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20161122/