Struts2 s:iterator循环嵌套查询的问题

时间:2021-10-22 18:38:22
1.请问用Struts2标签如何实现以下三级嵌套查询(关键在于子循环使用了上一级循环中的字段值)
  而Struts2标签只能从Action转到jsp页后获取,而嵌套循环需要再传参数到Action,再查询,Struts2能传递参数到Action吗?

      <%
            String sqlA="select * from Main_A";
            ResultSet rsA=DB.getResultSet(sqlA); 
            while(rsA.next()){ 
                  
                  //内容

                  String sqlB="select * from Main_B wherw class='"+rsA.getString("class")+"'";
                  ResultSet rsB=DB.getResultSet(sqlB); 
                  while(rsB.next()){ 

                     //内容

                       String sqlC="select * from Main_C where classto='"+rsB.getString("class")+"'";
                       ResultSet rsC=DB.getResultSet(sqlC); 
                       while(rsC.next()){ 

                          //内容

                          }

                  }
           }

         %>   

3 个解决方案

#1


后台生成整个html字符串输出到前台好了。。。

#2


没见过这么在jsp页面上写连接数据库代码的,为什么不在action中直接写

#3


不明白了,为什么要这样查询,你一次性在后天查询完,分别放在集合中,然后在前台显示就可以了,为什么要分步查询勒?后台你可以用三个集合分别存放也可以用一个集合,如下:

public class ClassA{ // 分别加上getter和setter方法
    private String/int. x1;
    private String/int. x2;
    ....
    private Set<ClassB> classB;
}


public class ClassB{ // 分别加上getter和setter方法
    private String/int. x1;
    private String/int. x2;
    ....
    private Set<ClassC> classB;
}


public class ClassC{ // 分别加上getter和setter方法
    private String/int. x1;
    private String/int. x2;
    ....
}

在后天只需要定义一个List<ClassA> classA = new ArrayList<ClassA>();然后按照层次结构将数据放进去即可。

#1


后台生成整个html字符串输出到前台好了。。。

#2


没见过这么在jsp页面上写连接数据库代码的,为什么不在action中直接写

#3


不明白了,为什么要这样查询,你一次性在后天查询完,分别放在集合中,然后在前台显示就可以了,为什么要分步查询勒?后台你可以用三个集合分别存放也可以用一个集合,如下:

public class ClassA{ // 分别加上getter和setter方法
    private String/int. x1;
    private String/int. x2;
    ....
    private Set<ClassB> classB;
}


public class ClassB{ // 分别加上getter和setter方法
    private String/int. x1;
    private String/int. x2;
    ....
    private Set<ClassC> classB;
}


public class ClassC{ // 分别加上getter和setter方法
    private String/int. x1;
    private String/int. x2;
    ....
}

在后天只需要定义一个List<ClassA> classA = new ArrayList<ClassA>();然后按照层次结构将数据放进去即可。