`
夜之son
  • 浏览: 25822 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
社区版块
存档分类
最新评论

s:doubleselect 标签

阅读更多

最近在项目中用到了一个需要联动的地方,我有很多个专业课。每个专业课有很多个知识点。现在我希望的是使用选择了一个专业课之后,对应的知识点在二级下拉框中也对应改变。这个实现如果使用ajax的话,可以实现。

我用的是SSH,struts2中有联动标签,不过这个标签好像并不是很好用。还是说说我的思路吧:我先查出一个专业所对应的专业课,然后根据专业课id来查出专业课所对应的知识点。然后显示在前台,保证专业课和知识点可以联动。

 

/*
	 * 查找相应课程名所对应的知识点
	 * */
	public List<Knowl> findkno(int i) {
		// TODO Auto-generated method stub
		List<Knowl> list=new ArrayList<Knowl>();
		list=this.getHibernateTemplate().find("from Knowl as kn where kn.cname="+i);
		return list;
	}
	/*
	 * 查找相应专业所对应的课程
	 */
	public List<Cname> findcno(String str) {
		// TODO Auto-generated method stub
		List<Cname> list=new ArrayList<Cname>();
		list=this.getHibernateTemplate().find("from Cname as cn where cn.spec=?", str);
		return list;
	}
	/*
	 * 查找相应课程所对应的id
	 */ 
	public List<Integer> getcnid(String str) {
		// TODO Auto-generated method stub
		List<Integer> list = new ArrayList<Integer>();
		list=this.getHibernateTemplate().find("select cn.cnameId from Cname as cn where cn.cname=?",str);
		return list;
	}

 

 用一个action来调用这些方法:

 

 lk=new ArrayList<Knowl>();
		 ls=new ArrayList<Integer>();
		map=new HashMap();
		list=cdao.findcno("JAVA");//获得java专业所对应的专业课集合
		/*
		 * 遍历课程名得到每一个课程的id
		 * */
		for(int i=0;i<list.size();i++){
			String str=list.get(i).getCname();//获得各个专业课所对应的专业课名字
			 ls=cdao.getcnid(str);//获得每一个专业课的id
			for(int z=0;z<ls.size();z++){
				int j=(int)ls.get(z);
				lk=cdao.findkno(j);//获得每一门专业课所对应的知识点
				map.put(j, lk);
			}
		}
		return "success";

 

 list是要交给前台显示的一级菜单。map是要显示的二级菜单.其中j为每个专业课所对应的id。

前台是这样显示的:

 

<s:doubleselect name="first" list="list" listKey="cname" listValue="cname" 
												doubleName="second"  doubleList="map.get(cnameId)" 
												doubleListKey="knowl" doubleListValue="knowl" 
												formName="suibian" theme="simple">
		</s:doubleselect>
 

网上有哥们这样做,doubleList="map.get(top.id)",我试过用,没能实现。map.get(cnameId)也能直接得到那个对象。 listKey="cname"也可一些成cnameId.

cname,cnameId都是对象Cname中的属性。就是专业课那张表的属性,knowl为知识点那个对象的一个属性。

而且formName="suibian" 也要跟表单的名字保持一致,不然也出不来。我按照这种方式实现了我的要求。

希望可以提供给需要的兄弟们一些启示,有高见的也请不吝赐教。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics