我在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
大小或在此无法访问。(可能是任何原因)
答案 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响应数据的表,我猜有两种选择:
一旦获得AJAX响应,就会动态地使用HTML和javascript构建表。
在JSP中有一个<div>
,并在该AJAX成功的表中加载另一个JSP。