2

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

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


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

function treeViewAjax(Url){

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


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

@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,当我提醒数据时,它会显示列表完美的价值观。
现在我被困在这里,
我如何捕获JSP 页面上reportList的方法返回searchDummyView以及如何使用 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在这里返回大小或无法在此处访问。(可能是任何原因)

4

1 回答 1

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。

于 2013-06-17T07:05:20.543 回答