FaradayZhangChina 2017-04-20 06:11 采纳率: 0%
浏览 1349
已结题

JS中的EL表达式到底是如何引用后台包的?

最近,在开发中遇到一个奇怪的问题,想请教大家帮忙解决。

原来,我们公司在开发一套关于商品的系统,早先的开发人员编写的一个应用程序,有一个商品总览的页面,在此,成为页面1.jsp,这个1.jsp里,用静态include方法添加了1个2.jsp的页面,其中有一段是关于商品信息总览页面的分页的。代码段如下:

 //上一页
        if ('${page}' != '1' && '${page}' != '') {
            $("#Tools17").toggleClass('Tools17_disable').toggleClass('Tools17');
            $("#Tools17").on('click', function() {
                searchItemByPageNo('${prePage}');
            });
        }

        //下一页
        if ('${page}' != '${total}') {
            $("#Tools19").toggleClass('Tools19_disable').toggleClass('Tools19');

            $("#Tools19").on('click', function() {
                searchItemByPageNo('${nextPage}');
            });
        }
        //最后一页
        if ('${page}' != '${total}' && eval('${total}') > eval('${page}')) {
            $("#Tools18").toggleClass('Tools18_disable').toggleClass('Tools18');
            $("#Tools18").on('click', function() {
                searchItemByPageNo('${total}');
            });
        }

        //第一页
        if ('${page}' != '1' && '${page}' != '') {
            $("#Tools16").toggleClass('Tools16_disable').toggleClass('Tools16');
            $("#Tools16").on('click', function() {
                searchItemByPageNo('1');
            });
        }

请注意,这个${page}变量,我一直不知道这是引用哪个程序?
问题就在于,后来,我接手了继续根据用户需求开发的工作,我开发了另一个应用程序—商品退货,开发完成后,用户反映,使用我的程序没问题,只是,在退出我的程序,重新回到商品总览的页面的时候,却发现页面虽然显示出来了,只是,动态输入商品货号,原来显示出的信息,都不显示了。
昨天,我仔细地查找了错误,发现当点击完商品总览页面菜单以后,URL跳转到1.jsp,加载了2.jsp后,chrome浏览器F12报错,identifier报错,点击出错的行,跳转到了每个${page}处,这里显示出来这个变量引用了我编写的一个后台分页程序Page.java的地址,并且,连实时运行的SQL语句也暴露在里面。
无奈,以前的开发人员写的程序已经达成JAR包,无法修改,我只好修改自己的Page.java程序,改名为MyPage.java, 同时,把放入session的sessionKey从page,改成pagination.

图片说明

然后,我启动程序,结果,当我点击商品总览菜单命令,后台依然报这个错误,只是原来${page}引用的路径从com.xxx.xx.Page@xxx 变成了com.xxx.xx.MyPage@xxx,
我现在想请教大家,究竟这个${page}引用的是什么?从哪里可以找到,为何它引用了另一个package里的程序?如果是重名冲突,我修改了我的类名,为何还是这样?

谢谢!

  • 写回答

2条回答 默认 最新

  • FaradayZhangChina 2017-04-20 06:21
    关注

    我再补充一些,我在2.jsp页面引用的js里,找到了以下的一些代码

     function searchItemByPageNo(pageNo) {
        $.ajax({
            type : 'post',
            url : ctx + '/item/query/itemBaseInfoPage',
            data : {
                page : $.trim(pageNo)
            },
            success : function(data) {
                /*$("#content").children().remove();
                $("#content").html(data);*/
                $("#ovreviewContent").empty();
                $("#ovreviewContent").html(data);
                //显示创建人等信息
                $("#message").show();
                // 设置订货方式
                setItemStoreInfoOrdCreatMethd();
                //设置条码
                setItemBarcode("");
                // 屏蔽查询
                $('#Tools6').removeClass('Tools6').addClass('Tools6_disable').unbind("click");
                //重置按钮
                overviewReset();
            }
        });
    }
    

    是不是2.jsp里的${page}就是来自于这段js里的page变量?如果,是的话,我顺藤摸瓜,找到这个URL对应的代码:

     /**
         * 商品总览-详情页面分页
         * 
         * @param model
         * @param itemNo
         * @return
         */
        @RequestMapping("/itemBaseInfoPage")
        public String itemBaseInfoPage(HttpServletRequest request, HttpServletResponse response, Model model, String storeNoSearch, String storeNameSearch, String itemNoSearch, String itemNameSearch,
                Integer page, String barcodeSearch) {
            String searchAll = "";
            //基本信息
            if (null == page) {
                page = 1;
            }
            SearchCondItemBasicVO searchVO =new SearchCondItemBasicVO();
            if(StringUtils.isNotEmpty(itemNoSearch)){
                searchVO.setItemNo(new Integer(itemNoSearch));
            }else{
                searchAll = "1";
                model.addAttribute("searchAll",searchAll);
            }
            setSearchParam(model,storeNoSearch,storeNameSearch,itemNoSearch,itemNameSearch,searchAll);
            if(StringUtils.isNotEmpty(barcodeSearch)){
                /*itemNo = this.getItemNoByItemBarcode(barcode);*/
                searchVO.setBarcode(barcodeSearch);
            }
            PaginationSettings ps = new PaginationSettings();
            List<Ordering> orderList = new ArrayList<Ordering>();
            Ordering order = new Ordering(true,"itemNo");
            orderList.add(order);
            ps.setOrderBy(orderList);
            ps.setPageNo(page);
            ps.setPageSize(1);
            ItemsFacade nf = ServiceUtil.getService("itemsFacade", ItemsFacade.class);
            PaginationResult paginationResult = nf.searchItemBasicList(ps, searchVO);
            if (paginationResult.getTotalCount() == 0 || paginationResult.getTotalCount() == null) {
                Map<String, Object> jsonMap = new HashMap<String, Object>();
                jsonMap.put("message", "没有找到对应的数据信息!");
                return ajaxJson(response, jsonMap);
            }
            ItemBasicVO itemBasicVO = (ItemBasicVO)paginationResult.getData().get(0);
            model.addAttribute("total", paginationResult.getTotalCount());
            model.addAttribute("page", page);
            model.addAttribute("prePage", page - 1);
            model.addAttribute("nextPage", page + 1);
            String searchItemNo = StringUtils.isNotEmpty(itemNoSearch) ?itemNoSearch : itemBasicVO.getItemNo().toString();
            if(StringUtils.isBlank(barcodeSearch)){
                List barcodeList = nf.getItemBarcodeListByItemNo(new Integer(searchItemNo));
                if(!barcodeList.isEmpty()){
                    model.addAttribute("barcodeSearch",((Map)barcodeList.get(0)).get("barcode"));
                }
            }else{
                model.addAttribute("barcodeSearch", barcodeSearch);
            }
            return this.itemBaseInfo(request,model, storeNoSearch, storeNameSearch, searchItemNo, itemNameSearch,searchAll);
        }
    

    可是,怎么会引用我的另一个包下面的类文件呢?我百思不得其解。请大家帮忙解决。谢谢。

    评论

报告相同问题?

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程