【问题标题】:foreach through a servlet List in a javascript function通过javascript函数中的servlet列表进行foreach
【发布时间】:2013-05-15 05:00:45
【问题描述】:

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 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>

我知道&lt;%=session.getAttribute("hotspots")%&gt; 表达式是错误的,但我想做类似的事情。 我怎样才能做到这一点?

【问题讨论】:

  • 你需要修改你说jsp的问题,而代码是javascript
  • JSP 生成 HTML 输出。 JS 是 HTML 输出的一部分。 JSP 和 JS 根本不同步运行。您需要做的就是编写 JSP 代码,使其准确生成所需的 HTML 输出,您可以通过右键单击验证,在浏览器中 View Soruce
  • 我猜你可以以 JSON 格式返回 hotspot 中的对象列表,这样它就可以很容易地转换为 JavaScript 对象,你可以按照 JS 代码中提供的方式使用它。跨度>

标签: java javascript jsp jstl el


【解决方案1】:

这样使用

先在jsp中设置一个变量

<% 
    List<String> param= List<String>session.getAttribute("hotspots");
 %>

然后像这样使用。

 <script>
    var h = '<%=param%>';
 </script>

【讨论】:

  • List#toString() 的结果 List&lt;String&gt; 根本不代表一个有效的 JS 字符串数组。
  • @LuiggiMendoza 我知道。但是如果你必须在你的 javascript 中读取 java 变量,那是唯一的方法。
  • 真的吗?这与var h = '${hotspots}'; 的效果完全相同,这仍然是错误的答案。如果您无法可靠地从头顶回答,请先自己尝试一下。
  • 没有正确的方法,因为它取决于您的设计,但这种方法也不能解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 2011-07-30
  • 2017-08-12
  • 2017-07-27
相关资源
最近更新 更多