通过javascript函数中的servlet列表进行foreach
Servlet代码:通过javascript函数中的servlet列表进行foreach,java,javascript,jsp,jstl,el,Java,Javascript,Jsp,Jstl,El,Servlet代码: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); Facade f = new Facade(); //f.hotspots() return a list of object
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
Facade f = new Facade();
//f.hotspots() return a list of object used as marker***
session.setAttribute("hotspots", f.hotspots());
prossimaPagina = "/map.jsp";
ServletContext application = getServletContext();
RequestDispatcher rd = application.getRequestDispatcher(prossimaPagina);
rd.forward(request, response);
return;
}
java脚本代码:
<script type="text/javascript">
var map;
function initialize() {
var myLatlng = new google.maps.LatLng(10,10);
var mapOptions = {
zoom: 4,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
placeMarker();
}
function placeMarker() {
var icon = 'icon/hs.png';
var hotspotList = <%=session.getAttribute("hotspots")%>;
for ( var h in hotspotList ) {
var marker = new google.maps.Marker({
position: (h.getLat(),h.getLng()),
map: map,
icon: icon
});
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
var映射;
函数初始化(){
var mylatng=new google.maps.LatLng(10,10);
变量映射选项={
缩放:4,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
placeMarker();
}
函数placeMarker(){
var icon='icon/hs.png';
var热点列表=;
用于(热点列表中的var h){
var marker=new google.maps.marker({
位置:(h.getLat(),h.getLng()),
地图:地图,
图标:图标
});
}
}
google.maps.event.addDomListener(窗口“加载”,初始化);
我知道
表达式是错误的,但我想这样做。
我怎样才能做到这一点呢?像这样使用
首先在jsp中设置一个变量
<%
List<String> param= List<String>session.getAttribute("hotspots");
%>
然后像这样使用
<script>
var h = '<%=param%>';
</script>
var h='';
当代码为javascriptJSP生成HTML输出时,您需要修改您所说的jsp问题。JS是HTML输出的一部分。JSP和JS根本不同步运行。您所需要做的就是编写JSP代码,使其能够准确地生成所需的HTML输出,您可以通过右键单击、在浏览器中查看或导入来验证。我想您可以返回JSON格式的hotspot
中的对象列表,因此,它可以很容易地转换为JavaScript对象,您可以按照JS代码中提供的方式使用它。List#toString()
列表的结果根本不代表有效的JS字符串数组。@Luigimendoza我知道这一点。但是如果你必须在javascript中读取java变量,那是唯一的方法。真的吗?这实际上与var h='${hotspots}'完全相同代码>,这仍然是错误的答案。如果你不能从头顶可靠地回答问题,请先自己尝试一下。没有正确的方法,因为这取决于你的设计,但这种方法也不能解决问题。