关于Struts2 <s:doubleselect>的用法
最近在写一个部门与人员的上下级联动,用了Struts2的doubleselect,代码成功执行,无报错,但不显示数据。代码如下:
//部门与员工的doubleselect public Map<Department, List<User>> getDepUser() { db=DBConnectionManager.getInstance(); con=db.getConnection("idb"); sql="select departmentcode,departmentname from tb_department order by departmentcode"; //ArrayList listDepUser=new ArrayList(); Map<Department,List<User>> mapDepUser=new HashMap<Department,List<User>>(); try { ps=con.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ Department department=new Department(); department.setDepartmentcode(rs.getString("departmentcode")); department.setDepartmentname(rs.getString("departmentname")); sql2="select userid,username from tb_user where departmentcode='"+rs.getString("departmentcode")+"'"; ps=con.prepareStatement(sql2); rs1=ps.executeQuery(); List<User> uList=new ArrayList<User>(); while(rs1.next()) { //List<User> uList=new ArrayList<User>(); User user=new User(); user.setUserid(rs1.getString("userid")); user.setUsername(rs1.getString("username")); uList.add(user); //mapDepUser.put(department, uList); } mapDepUser.put(department, uList); } }catch(SQLException ex) { ex.printStackTrace(); }finally { freeCon(); } //listDepUser.addAll(mapDepUser.values()); return mapDepUser; }private Map<Department, List<User>> coldepuser;public void setColdepuser(Map<Department, List<User>> coldepuser) { this.coldepuser=coldepuser; }public Map<Department, List<User>> getColdepuser() { return coldepuser; }//跳转到部门添加页面public String add() throws Exception { //HttpServletRequest request=ServletActionContext.getRequest(); UserDao userdao=new UserDao(); //Map<Department,List<User>> mapDepUser=new HashMap<Department,List<User>>(); DepartmentDao departmentdao=new DepartmentDao(); Map<Department, List<User>> colDepUser=userdao.getDepUser(); Collection departmentcodeCol=departmentdao.getDepartmentCode(); setDepartmentcode(departmentcodeCol); setColdepuser(colDepUser); //request.setAttribute("mapDepUser", mapDepUser); return "add"; }<p> <label>上级主管:</label> <s:doubleselect name="department.higherhead" list="coldepuser" listKey="departmentcode" listValue="departmentname" doubleList="coldepuser[top]" doubleName="userid" doubleListKey="userid" doubleListValue="username" theme="simple" /></p>
doubleList则指向该Map即coldepuser中和list相关联的数据.
我粘贴个例子给LZ看看吧
[解决办法]
我从网上拿了个例子贴出来.LZ看看应该能得到一些启发
public class Area { private Long id; private String areaName; // getter and setter }
[解决办法]
没用过doubleselect
不过这种东西一般不显示的话就debug一定会找的到
或者用喷的,看看页面上接到的list里面有值没值
然后就是详细的对比 字段大小写什么的有没有写错
[解决办法]
学习 学习
[解决办法]
我记得我在学这个标签的时候有一句注释说到 <s:doubleselect >标签必须嵌套在<s:form>中
我把以前写的例子发给你看看,只是个JPS的代码,这个是可以运行的,希望能有帮助。
<%
DeptInfo d1=new DeptInfo("D001","销售部");
DeptInfo d2=new DeptInfo("D002","财务部");
EmpInfo e1=new EmpInfo("E001","张三");
EmpInfo e2=new EmpInfo("E002","李四");
EmpInfo e3=new EmpInfo("E003","王五");
EmpInfo e4=new EmpInfo("E004","赵六");
d1.getEmpset().add(e1);
d1.getEmpset().add(e2);
d2.getEmpset().add(e3);
d2.getEmpset().add(e4);
Map map=new HashMap();
map.put(d1,d1.getEmpset());
map.put(d2,d2.getEmpset());
request.setAttribute("map",map);
%>
<s:form action="double"> //<s:doubleselect >标签必须嵌套在<s:form>中
级联下拉框:<hr/>
<s:doubleselect
cssStyle="width:130px"
list="#request.map.keySet()" //keySet代表Map的键的集合,即d1,d2部门实例
listKey="deptId"
listValue="deptName"
name="deptId"
doubleCssStyle="width:130px"
doubleList="#request.map[top]"
doubleListKey="empId"
doubleListValue="empName"
doubleName="empId">
</s:doubleselect>
<hr/>
<s:submit value="提交"></s:submit>
</s:form>
[解决办法]
对应的action中要有get方法才行
[解决办法]
学习。。。。
[解决办法]
我楼上这个帮顶男子,到哪里都能看到你,原来你的分数是这样来的.....
[解决办法]
while(rs1.next()) {
.....
}
后台 Action 中 ,打印 User中的信息看看,是否有值 。。。。
[解决办法]
我不懂得struts的这个标签,但是,楼主好有钱的,我是穷人,帮你顶顶,给我一点分吧。
[解决办法]
我觉得4楼有道理。