abys 2015-07-23 09:20 采纳率: 50%
浏览 2451

spring jdbctemplate使用queryforlist返回的数据不能修改么?

我有两个表,表中各有一个类型字段,名称字段,数值字段,例 如下:

表1:
类型 名称 数值
文具 铅笔 2
耗材 纸 10

表2
类型 名称 数值
文具 铅笔 1
耗材 纸 1

表1存的是采购计划数据,表2存的是采购数据

我现在需要将两表的各自分类数据汇总后进行输出

我分别用两次jdbctemplate查询了两个表,并汇总了数据,现在需要将表2中与表1中类型、名称一致的数据加入表1的查询结果

    String strResult,strMt,strMn,strMt1,strMn1;
    for (Map<String, Object> map1 : sList) {
        strResult="";
        strMt=map1.get("mt").toString();
        strMn=map1.get("mn").toString();
        for (Map<String,Object> map2:tList){
            strMt1=map2.get("mt").toString();
            strMn1=map2.get("mn").toString();
            if(strMt.equalsIgnoreCase(strMt1) && strMn.equalsIgnoreCase(strMn1)){
                strResult=map2.get("purchase").toString();
            }
        }
        map1.put("purchase", strResult);    //将采购数据写入列表
    }

    sList是表1的查询结果,tList是表2的查询结果,问题出现在最后一句。
    map1.put("purchase", strResult);    //将采购数据写入列表
    如果没有这一句,一切都是正常的,只不过数据是不对的。
    我用循环将两组数据进行对比,将相同的类型与名称的数据,把值写入sList中的map里,可是老是在输出到前端页面时报出如下错误 :

    Expected method. obj.purchase?string evaluated instead to freemarker.template.SimpleScalar on line 40, column 36 in page/reportAll/reportAllPlanPurchaseDateReport.htm. The problematic instruction: ---------- ==> ${obj.purchase?string('##0.000')} [on line 40, column 34 in page/reportAll/reportAllPlanPurchaseDateReport.htm] ---------- Java backtrace for programmers: ---------- freemarker.template.TemplateException: Expected method. obj.purchase?string evaluated instead to freemarker.template.SimpleScalar on line 40, column 36 in page/reportAll/reportAllPlanPurchaseDateReport.htm. at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:136) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:114) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179) at freemarker.core.Environment.visit(Environment.java:428) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) at freemarker.core.Environment.visit(Environment.java:221) at 

        如果不加上面那句话,直接输出,完全没有问题,加了这句话后,就会出现错误 ,请高手讲解一下为什么?
  • 写回答

3条回答

  • Evankaka 博客专家认证 2015-07-23 11:23
    关注

    前端用到了purchase这个字段,并且没有判断它是否为null的情况。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算