如何使用AJax获得数据,并将此数据封装在request的属性值中,并且页面可以访问

「已注销」 2019-04-26 09:00:08
在JSP页面中需要从后端获取最新商品集合newList,将此newList数据使用EL在<c:forEach items="${newList}" var="p">中遍历
但此种方法破坏了MVC模式,不可取


//JSP页面中的Javay语言,这种写法不可取
<%

ProductService productService=new ProductServiceIpml();
List<Product> newList=productService.findByNew();
request.setAttribute("newList",newList);
%>
//遍历上面的newList属性,
<c:forEach items="${newList}" var="p">
<div class="col-md-2" style="text-align:center;height:200px;padding:10px 0px;">
<p><a href="#"'>${p.pname}</a></p>
</div>
</c:forEach>


想用Ajax来调用Servlet,获取newList的值并将其设置为request.setAttribute("newList",newList);,然而,Ajax是在页面完全加载完成之后才调用后端数据的,页面在中的<c:forEach items="${newList}" var="p"></c:forEach>的${newList}在调用Ajax前为空,调用之后,页面早就加载完毕

那么该如何使得

1.页面调用Ajax去获取newList数据

$(function () {
$.post(URL,Param,function (flag) {
/*

访问URL获取newList数据
*/
});
});

2.并将数据装在
request.setAttribute("newList",newList);

3.页面能够遍历数据

<c:forEach items="${newList}" var="p">
<div class="col-md-2" style="text-align:center;height:200px;padding:10px 0px;">
<p><a href="#"'>${p.pname}</a></p>
</div>
</c:forEach>


那么该如何解决这个问题呢?
谢谢各位,不胜感激!!!
...全文
391 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2019-04-29
  • 打赏
  • 举报
回复
恩恩,受益匪浅
nayi_224 2019-04-28
  • 打赏
  • 举报
回复
jstl是在jsp解析成html时运行的,ajax是在客户端的html上运行的,为什么不直接用前端的解决方案? 非要这么做也行,<c:forEach items="${newList}" var="p">这段语句写进另一个jsp文件中,然后异步请求返回html代码,用$.fn.html写进页面中去。
「已注销」 2019-04-27
  • 打赏
  • 举报
回复
谢谢您,现在还没接触到你说的这些框架问题,看来不使用框架去解决这个问题是不现实的,这大概也就是框架存在的原因吧,谢谢您
li905663280 2019-04-27
  • 打赏
  • 举报
回复
很多公司的框架都支持类似refreshpart这个功能,就是ajax去后台再去请求一部分页面,后面填充值后返回一个页面,在前台把原页面empty。把新页面填充到页面。问题就变成了jstl怎么只渲染部分页面。之前我们公司都用的velocity

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧