黑马旅游网站之搜索查询的相关bug

最近在做毕业设计,我用springboot重新写了一下黑马旅游网,解决了搜索功能的相关bug,也发现了一个目前解释不了的问题。
问题背景:在对旅游线路进行分页展示的时候,有三种操作:1.点击线路分类cid直接显示该分类下的旅游线路。2.点击线路分类后又输入线路rname进行模糊查询。3.不点击线路分类直接输入rname模糊查询。
操作1:
解决办法为:黑马旅游网站之搜索查询的相关bug_第1张图片
因为在前端传回来null的时候,这个null是一个字符串,如果不做判断,那么后台就会把null视为String类型的"null"字符串,导致点击下一页的时候查询的结果为0.
黑马旅游网站之搜索查询的相关bug_第2张图片
那么问题来了,为什么第一次传入cid的时候,rname同样是null,可是ajax发送get请求,在f12里看到的是http://localhost:8080/route/pageQuery?cid=1&rname=¤tPage=1,也就是说null为什么会变为"",我无法知道原因。

操作3:不点击线路分类直接输入rname模糊查询,我们可以做如下操作:
前台页面:
var cid = getParameter(“cid”)
if (!cid){
cid=0;
}

        location.href = "route_list.html?cid=" + cid + "&rname=" + rname;

后台页面:
public PageBean getListByPage(Integer cid, int currentPage, int pageSize, String rname) {
if (“null”.equals(rname)){
rname=null;
}
if (cid==0){
cid=null;
}
问题得到解决。但是为什么前台传入cid为null的时候,为何ajax没把null变"",http状态码为400。
Request URL: http://localhost:8080/route/pageQuery?cid=null&rname=%E7%A6%8F%E5%B7%9E¤tPage=1
Request Method: GET
Status Code: 400
我的后台已经写了required=false,但是仍然传不过来,这是啥原因呢?
@RequestMapping("/pageQuery")
public ResultInfo pageQuery(@RequestParam(required = false) Integer cid…

为了确定程序一定能运行,我最终修改成了这样:
var cid = getParameter(“cid”);
var rname=getParameter(“rname”);
if (rname){
rname=window.decodeURI(rname);
}else{
rname="";
}
后台:
public PageBean getListByPage(Integer cid, int currentPage, int pageSize, String rname) {
if ("".equals(rname)){
rname=null;
}
if (cid==0){
cid=null;
}
黑马旅游网站之搜索查询的相关bug_第3张图片
总结:问题在于为什么cid为null,传入后台会报400,而rname为null,为何ajax发送get请求自动把rname转化为"",但是前台页面仍然显示rname的值为"null",如图:
黑马旅游网站之搜索查询的相关bug_第4张图片
学疏才浅,求解释。

你可能感兴趣的:(黑马旅游网站之搜索查询的相关bug)