我正在编写一个应用程序来使用 java 和 javascript 获取谷歌地图中某个位置的纬度和经度。
下面的代码部分报错:
代码(jsp文件的一部分):
<script type="text/javascript">
var map;
//Initialization & some more code goes here
function centerChanged() {
<%
int lat=0,lng=0;
lat=%>map.getCenter().lat();<%
lng=%>map.getCenter().lng();<%
//request.setAttribute("lat", lat);
//request.setAttribute("lng", lng);
%>
}
从上面的代码中,这是导致错误的两行:
lat=%>map.getCenter().lat();<% lng=%>map.getCenter().lng();<%
附加信息:
map.getCenter().lat()
<< 这将返回一个数字,如 google maps API 中所述:
这是我遇到的错误:
org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP
PWC6197: An error occurred at line: 81 in the jsp file: /maptest.jsp PWC6199: Generated servlet error: string:///maptest_jsp.java:127: incompatible types found : void required: int
PWC6197: An error occurred at line: 82 in the jsp file: /maptest.jsp PWC6199: Generated servlet error: string:///maptest_jsp.java:130: incompatible types found : void required: int
谁能告诉我哪里出了问题?
最佳答案
您正在尝试将一个值从 Javascript 动态插入到 JSP 中。错误是 JSP 在服务器端执行,而 Javascript 在客户端执行。
你在那里写的等同于 Java 代码:
out.write("function centerChanged() {");
int lat=0,lng=0;
lat=;
out.write("map.getCenter().lat();");
lng=;
out.write("map.getCenter().lng();");
//request.setAttribute("lat", lat);
//request.setAttribute("lng", lng);
out.write("}");
明白了吗? <%%> 包围的都是纯 Java 代码,它外面的任何东西都会被打印出来,因此你的异常(exception)。
要解决此问题,您需要更改在服务器端 JSP 代码中检索客户端 Javascript 值的逻辑。
关于java - 将数字转换为整数?发现不兼容的类型 : void required: int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034751/