如何从列表中获取每个元素在javascript中的mvc控制器

How to get each element from list on spring mvc controller inside javascript

本文关键字:元素 javascript 中的 控制器 mvc 列表 获取      更新时间:2023-09-26

我正在使用Spring MVC。在控制器中,我从模型中获取列表对象,并将此列表传递给视图。我将循环索引传递给javascript函数。这是可以的,但现在我想通过javascript内的索引获得每个对象的值。我该怎么做呢?这是我的控制器类:

    @RequestMapping(method = RequestMethod.GET)
    public Model handleRequest(HttpServletRequest request,
    HttpServletResponse response,
    @RequestParam(required = false, value = "q") String query) throws Exception {
        Model model = new ExtendedModelMap();
        String orderItem = request.getParameter("order_item");
        List<Long> itemsIdList = new ArrayList<Long>();
        List<OrderRequest> orderRequestList =               getItemToppingCount(orderItem,itemsIdList);
        model.addAttribute("itemsSelected", orderRequestList);
        return model;
    }
这是我的JSP:
    <script>
    function remove_confirm_order(index){
        alert(index); // OK
        // Get value of first object in list
        var str1 = '${itemsSelected[0].name}';
        // When adding this line, I can't show anything from JSP
        var str2 = '${itemsSelected['+index+'].name}';
        alert(str1);
    }
    </script>
    <c:forEach var="item" items="${itemsSelected}" varStatus="loop">
    <a href="#" onclick="remove_confirm_order('${loop.index}');" />
    </c:forEach>

您可以在下面的代码片段中实现相同的引用:

<script>
    function remove_confirm_order(index, item){
        alert(index); // OK
        alert(item);  //OrderRequest
        var orderRequest = item;
        // Now extract value from item(instance of OrderRequest), example, orderRequest.getValue(index);
        // Get value of first object in list
        var str1 = '${itemsSelected[0].name}';
        // When adding this line, I can't show anything from JSP
        var str2 = '${itemsSelected['+index+'].name}';
        alert(str1);
    }
    </script>
    <c:forEach var="item" items="${itemsSelected}" varStatus="loop">
    <a href="#" onclick="remove_confirm_order('${loop.index}', ${item});" />
    </c:forEach>

更好的是从JavaScript向控制器发出AJAX调用,获得响应并做任何您想做的事情。

<script type="text/javascript"
    src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
    function callHandleRequest() {
        $.ajax({
            url : '/url/to/your/controller',
            success : function(result) {
                console.log(result);
            }
        });
    }
</script>

你可以这样做。

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  <script>
  var data = [];
  <c:forEach var="spring_data" items="${data_from_spring}">
    
  data.push(spring_data);
  </forEach>
  console.log(data);
</script>

你在javascript中创建一个数组。然后在脚本标记中使用jsp标记,您可以向数组中填充数据。记得在顶部

做jstl声明