显示Javascript在JSP页面上获取的列表值

时间:2013-06-17 06:40:17

标签: javascript jsp spring-mvc

我在test.jsp页面上有这个链接

<a onclick="treeViewAjax('${searchDummyUrl}/view/${search.DummyNumber}/1')">View</a>


现在当我点击此treeViewAjax时,正如您在链接中看到的那样调用JavaScript方法
这是treeViewAjax方法

function treeViewAjax(Url){

        $.ajax(Url, function(data) {
            alert(data);
        });
    }


同时我的Spring控制器的searchDummyView方法被调用了

@RequestMapping(value = "/Dummy/searchDummy/view/{dummyNumber}/{dummyTypeId}", method = RequestMethod.POST)
    public @ResponseBody
     List<Report> searchDummyView(ModelMap modelMap, @PathVariable("dummyNumber") Integer dummyNumber, @PathVariable("dummyTypeId") Integer dummyTypeId) {
        List<Report> reportList = new ArrayList<>();
        reportList.add(dummyService.readReport(dummyNumber, dummyTypeId));
        //modelMap.addAttribute("reportList", reportList);
        return reportList;
    }


现在,当Spring专家可以理解我已经使用@ResponseBody注释来制作ajaxical请求所以它再次将响应发送回请求的URL。现在再次控制在我的JS上方法treeViewAjax,当我提醒数据时,它会完美地显示列表值。
现在我被困在这里,如何捕获reportList返回searchDummyView JSP页面上的方法以及如何使用EL在JSP页面上迭代/显示它的值。
任何建议?

注意:我试图像这样展示reportList,但它对我不起作用

<c:choose>
            <c:when test="${reportList.size() > 0}">
<c:forEach items="${reportList}" var="list">
                                        //iterations over list but 
                                    </c:forEach>
...

... /> 

由于我的条件< 0,它没有显示列表中的任何内容,我猜它在此处返回0大小或在此无法访问。(可能是任何原因)

1 个答案:

答案 0 :(得分:1)

此代码不适用于您的情况:

<c:choose>
        <c:when test="${reportList.size() > 0}">
        <c:forEach items="${reportList}" var="list">
                     //iterations over list but 
        </c:forEach>
         ...

... /> 

您的JSTL和EL将由服务器处理并发送到浏览器。但是在你的情况下,JSP已经在浏览器中呈现,你正在发出一个AJAX请求,它将返回一些数据。您正在从服务器获得AJAX响应,而不是浏览器将尝试呈现的完整响应。要创建一个包含AJAX响应数据的表,我猜有两种选择:

  1. 一旦获得AJAX响应,就会动态地使用HTML和javascript构建表。

  2. 在JSP中有一个<div>,并在该AJAX成功的表中加载另一个JSP。