最近在做毕设“基于SSM的购物网站”,商品有很多种分类,我想在点击具体一个时,url发生变化,并动态加载页面上的商品信息。
最终效果:
1.女装 url:http://localhost:8181/SevenShop/product/nvzhuang
2.男装 url:http://localhost:8181/SevenShop/product/nanzhuang
(这里比较懒,数据库就存了一个男装商品)
实现方法:
@PathVariable指定请求的URL中的变量(值由前台form表单传给后台);
具体代码:
1.Java
@PostMapping("/{cname}")
public String getProductsByCid(Model m,@PathVariable String cname,String cid){
List<Product> pList = pService.getProductsByCid(Integer.valueOf(cid));
m.addAttribute("pList", pList);
return "product/category";
}
2.JSP
<ul id="products">
<c:forEach items= "${pList}" var="d">
//使用${d.字段名}将所需内容展示出来
</c:forEach>
</ul>
<div id="ceng" style="display: inline-block;">
<form action="" name="form1" method="post" id="form11">
<input type="hidden" name="cid" value="100" id="cidValue"/>
<input type="hidden" name="cname" value="nvzhuang" id="cnameValue"/>
<a href="" id="100" name="nvzhuang">女装</a>
<a href="" id="101" name="nanzhuang">男装</a>
......
</form>
</div>
3.JS
var cid = $('#cidValue').val();//获取隐藏cidValue中cid值
var cname = $('#cnameValue').val();//获取隐藏cnameValue中cname值
$("#form11 a").click(function(){
//将当前点击的a标签的id值赋给cid
cid = $(this).attr('id');
//将当前点击的a标签的name值赋给cname
cname = $(this).attr('name');
//改变隐藏cidValue,cnameValue的值
$('#cidValue').val(cid);
$('#cnameValue').val(cname);
//为表单的action属性值赋值
$('#form11').attr('action',cname);
//点击当前a标签,提交表单
$(this).attr('href','javascript:document:form11.submit();');
});
总结:
本人较笨,用的方法都较蠢,欢迎指正