List<Map> letterList = this.getHanton().getEmployeeDAO()
.getLetterName(comCode);
Map parent_dataMap = new HashMap();
Map dataMap = new HashMap();
List<Map> parent_datalist = new ArrayList<Map>();
for (Map m1 : letterList) {
parent_datalist = this.getHanton().getEmployeeDAO()
.getCompNameByLetterName(comCode,
m1.get("LETTER_NAME").toString());
parent_dataMap.put(m1.get("LETTER_NAME"), parent_datalist); // List<Map> compList = this.getHanton().getEmployeeDAO()
// .getCompName(comCode);
}
for (Map m : parent_datalist) {
String test1 = m.get("COMP_NAME").toString();
List datalist = this.getHanton().getEmployeeDAO()
.findByCompName(comCode, m.get("COMP_NAME").toString(),
conkind);
// dataList.put("name", );
dataMap.put(m.get("COMP_NAME"), datalist);
// dataMap.put("numList",datalist.size());
}
代码如上,为什么我的parent_datalist只能获得一个值?

解决方案 »

  1.   


                for (Map m1 : letterList) {
                    parent_datalist = this.getHanton().getEmployeeDAO()
                            .getCompNameByLetterName(comCode,
                                    m1.get("LETTER_NAME").toString());//这里总是获取个新的parent_datalist 
                    parent_dataMap.put(m1.get("LETTER_NAME"), parent_datalist);                // List<Map> compList = this.getHanton().getEmployeeDAO()
                    // .getCompName(comCode);
                }
    检查一下这块代码吧,不清楚逻辑是什么,
    parent_datalist = this.getHanton().getEmployeeDAO()
                            .getCompNameByLetterName(comCode,
                                    m1.get("LETTER_NAME").toString());//这里总是获取个新的parent_datalist 
      

  2.   

    应该是你获得的最后那个值吧。改成如下试试
    List<Map> letterList = this.getHanton().getEmployeeDAO()
                        .getLetterName(comCode);
                Map parent_dataMap = new HashMap();
                Map dataMap = new HashMap();
                //List<Map> parent_datalist = new ArrayList<Map>();
                for (Map m1 : letterList) {
                    List<Map> parent_datalist = this.getHanton().getEmployeeDAO()
                            .getCompNameByLetterName(comCode,
                                    m1.get("LETTER_NAME").toString());
                    parent_dataMap.put(m1.get("LETTER_NAME"), parent_datalist);                // List<Map> compList = this.getHanton().getEmployeeDAO()
                    // .getCompName(comCode);
                
                    for (Map m : parent_datalist) {
                        String test1 = m.get("COMP_NAME").toString();
                        List datalist = this.getHanton().getEmployeeDAO()
                            .findByCompName(comCode, m.get("COMP_NAME").toString(),
                                    conkind);
                        // dataList.put("name", );
                        dataMap.put(m.get("COMP_NAME"), datalist);
                        // dataMap.put("numList",datalist.size());
                     }
               }
      

  3.   

    这样循环嵌套,我之前用了,可以每次传到页面的时候都把全部的内容显示出来了,并不是只得到我想要的部分!
    页面传值代码如下:this.setAttribute(request, "parent_datalist", parent_dataMap);
    this.setAttribute(request, "datalist", dataMap);
      

  4.   

    说实话lz,按你这样写代码,就算这次给你改对了,以后还是会出问题的.
    不知道为什么你所有东西都要放到Map里,建两个domain对象不行吗?
    你的业务我不熟悉,我大概写了这么几个类,你参考以下.还有通过comName或者letterName获得company应该单独放在一个类里public class Company {
    private String comName;
    private String comCode;
    private Letter letter;

    public String getComName() {
    return comName;
    } public void setComName(String comName) {
    this.comName = comName;
    } public String getComCode() {
    return comCode;
    } public void setComCode(String comCode) {
    this.comCode = comCode;
    } public Letter getLetter() {
    return letter;
    } public void setLetter(Letter letter) {
    this.letter = letter;
    }
    }
    public class Letter {
    private List<Company> companys; public List<Company> getCompanys() {
    return companys;
    } public void setCompanys(List<Company> companys) {
    this.companys = companys;
    }
    }
    public interface CompanyService {
    public Company getCompanyByName(String comName);

    public List<Company> getCompanyByLeeter(Letter letter);
    }
      

  5.   

    我感觉我低层数据库的设计可能有些问题,我下午准备把低层的SQL改改,然后用一个DATALIST传值到页面。
    不用现在这种2个DATALIST的。
      

  6.   

    谢谢各位,问题解决了
    只要把Map dataMap = new HashMap();
    放在第一个FOR循环语句里就可以了!