数据已经查出来了,请指点如何在下拉菜单中显示product_name,以及各自对应的content
有4个bean,productForm,product_kindForm,product_typeForm,product_nForm
对应4张表
这是我的productAction代码import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;public class productAction extends Action{ @Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
try {
Connection con = connectionFactory.getconnection();
String sql1 = "select id,product_name,content from product";
PreparedStatement ps1=con.prepareStatement(sql1);
List products =new ArrayList();
ResultSet rs1=ps1.executeQuery();
List kinds = new ArrayList();
while(rs1.next()){
int pid=rs1.getInt("id");
String product_name=rs1.getString("product_name");
String content1=rs1.getString("content1");
productForm prof = new productForm();
prof.setPid(pid);
prof.setProduct_name(product_name);
prof.setContent1(content1);
kinds.add(prof);
Connection con2 = connectionFactory.getconnection();
String sql2 = "select k_id,kind_name,content from product_kind where productID="+pid;
PreparedStatement ps2=con.prepareStatement(sql2);
ResultSet rs2=ps2.executeQuery();
while(rs2.next()){
int k_id=rs2.getInt(1);
String kind_name=rs2.getString(2);
String content2=rs2.getString(3);
product_kindForm prokf=new product_kindForm();
prokf.setK_id(k_id);
prokf.setK_name(kind_name);
prokf.setContent2(content2);
prof.getKinds().add(prokf);
Connection con3 = connectionFactory.getconnection();
String sql3 = "select t_id,t_name,content from product_type where kindID="+k_id;
PreparedStatement ps3=con.prepareStatement(sql3);
ResultSet rs3=ps3.executeQuery();
while(rs3.next()){
int t_id=rs3.getInt(1);
String t_name=rs3.getString(2);
String content3=rs3.getString(3);
product_typeForm protf= new product_typeForm();
protf.setT_id(t_id);
protf.setT_name(t_name);
protf.setContent3(content3);
prokf.getTypes().add(protf);
Connection con4 = connectionFactory.getconnection();
String sql4 = "select n_id,name,content4 from product_n where typeID="+t_id;
PreparedStatement ps4=con.prepareStatement(sql4);
ResultSet rs4=ps4.executeQuery();
while(rs4.next()){
int n_id=rs4.getInt(1);
String name=rs4.getString(2);
String content4=rs4.getString(3);
product_nForm pronf =new product_nForm();
pronf.setN_id(n_id);
pronf.setName(name);
pronf.setContent4(content4);
protf.getN().add(pronf);
}
}
}

}
for(int i=0;i<products.size();i++){
productForm p1f=(productForm)products.get(i);
request.setAttribute("p1", p1f);
System.out.println(p1f.getProduct_name());
System.out.println(p1f.getContent1());
for(int j=0;j<p1f.getKinds().size();j++){
product_kindForm p2f=(product_kindForm)p1f.getKinds().get(j);
request.setAttribute("p2", p2f);
for(int k=0;k<p2f.getTypes().size();k++){
product_typeForm p3f=(product_typeForm)p2f.getTypes().get(k);
request.setAttribute("p3", p3f);
for(int m=0;m<p3f.getN().size();m++){
product_nForm p4f=(product_nForm)p3f.getN().get(m);
request.setAttribute("p4", p4f);
}
}
}
}
return mapping.findForward("product_detail");
} catch (SQLException e) {
System.err.println("SQLException"+e.getMessage());
e.printStackTrace();
}
return mapping.findForward("fail");
}}

解决方案 »

  1.   

    你有几个下拉列表?是一个还是2个? 1个的话,就拼串。把product_name和content 拼成一个放到数组里或者是list里吧,然后页面上的list就去显示这个数组或者list就可以了呢。2个的话,就不用拼接的步骤了。
      

  2.   

    你有几个下拉列表?是一个还是2个? 1个的话,就拼串。把product_name和content 拼成一个放到数组里或者是list里吧,然后页面上的list就去显示这个数组或者list就可以了呢。2个的话,就不用拼接的步骤了。
      

  3.   

    我有4级下拉菜单,5个product_name下面有N多kind_name,kind_name下面有t_name,t_name下面有具体产品的名称 就是这种效果
    -联想产品--->product_name
        -服务器产品--->kind_name
             -万全工作组级--->t_name
                  -万全T168--->name