上文说到三级联动能够显示出要选择的产品,
当选择完成后,会产生这样一个确定按钮,在这其中写入这样一个事件,当点击后会把所选择的产品的id值传回到后台action中,
因为在jsp页面把id放入到array中 ,它会以字符串的形式,每个id之间有“,”分割,所以到action中要先把这个字符串分割出来,并转换为整形数组。
接下来要把选择的产品的产品名称整合到set中,因为set有去重的功能,这样需要比较的几个产品的参数名整合到了一起,
然后,把这些产品的参数都赋给Product p中。
紧接着把每个产品的参数名跟整合的做比较,如果名称一样的话,就把相应 的val赋给Product product1,
如果要是不同的话,就判断它是不是这个产品名称的最后一个参数名,如果是最后一个就说明,此产品中没有前面整合产品的参数,就需要附“--”用于显示。
for(int c = 0;c<arrays.length;c++)
{
Product product1 = new Product();
for(int j =0;j<str1.length;j++)
{
if(str1[j].equals(arrays[c]))
{
String sql4 = "select value from attrval where ID = ?";
String attrval = dao.qureystr(sql4, str2[j]);
System.out.println(attrval);
product1.setAttrval(attrval);
switch(i)
{
case 0 :p1.add(product1);break;
case 1 :p2.add(product1);break;
case 2 :p3.add(product1);break;
case 3 :p4.add(product1);break;
}
break;
}
else
{
if(j == str1.length-1)
{
product1.setAttrval("--");
switch(i)
{
case 0 :p1.add(product1);break;
case 1 :p2.add(product1);break;
case 2 :p3.add(product1);break;
case 3 :p4.add(product1);break;
}
}
}
}
}
}
此次比较功能最多支持4个产品进行比较,所以我们定义了一个ListProduct,其中有attrname,4个attrval,后面会判断到底选择了几个产品,
最后把listProduct放到之前定义的List<ListProduct> listProduct = new ArrayList<ListProduct>();中去,返回到jsp页面用structs标签循环显示 。
最终效果: