<s:form method="post" action="Tree.action" name="form1"><s:doubleselect headerValue="--请选择省--" headerKey="1"
list="list_sheng" listKey="id" listValue="name" doubleName="shi" formName="form1"
doubleList="cityMap.get(top.id)" doubleListKey="code" doubleListValue="name"/> 

解决方案 »

  1.   

    数据都从后台取得话 最好用AJAX,如果你不想用也可以实现 你可以一次吧省市得数据全都发到页面JS控制就可以了 在每个省得select值中设置属性list或其他属性 为这个省得市,选择后js控制取出该list得值改变市得菜单就可以了 
      

  2.   

    我用DWR写过,效果很不错 JS类似
      

  3.   

    模拟实现了一下,我的正常输出,联动好使,楼主的配置应该没问题,检查action吧<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <html>
    <head>
    </head>
    <body>
    <s:form  name="form1" action="/person/testConversion.action">
    <s:doubleselect
    list="list_sheng" listKey="id" listValue="name" doubleName="shi"
    doubleList="cityMap.get(top.id)" doubleListKey="code" doubleListValue="name"/>
    </s:form>
    </body>
    </html>后台action的代码是:
    package com.lan.adms.web;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;import com.lan.adms.domain.City;
    import com.lan.adms.domain.Province;
    import com.opensymphony.xwork2.ActionSupport;public class TestAction extends ActionSupport {
    private List<Province> list_sheng; 
    private List <City> list_shi; 
    private Map<String,List <City>> cityMap; 

    @Override
    public String execute() throws Exception {
    list_shi = new ArrayList<City>();
    cityMap1 = new HashMap<Province, List<City>>();
    cityMap = new HashMap<String, List<City>>();
    list_sheng = new ArrayList<Province>(); City c = new City();
    City c1 = new City();
    c.setCode("11");
    c.setName("哈尔滨");
    c1.setCode("22");
    c1.setName("大庆");
    list_shi.add(c);
    list_shi.add(c1);

    Province p = new Province();
    p.setId("1");p.setName("黑龙江");
    Province p1 = new Province();
    p1.setId("2");p1.setName("浙江");
    cityMap1.put(p, list_shi);
    cityMap.put("1", list_shi);
    list_shi = new ArrayList<City>();
    list_sheng.add(p);
    list_sheng.add(p1);

    City c2 = new City();
    City c3 = new City();
    c2.setCode("33");
    c2.setName("杭州");
    c3.setCode("44");
    c3.setName("苏州");
    list_shi.add(c2);
    list_shi.add(c3);

    cityMap1.put(p1, list_shi);
    cityMap.put("2", list_shi);

    return SUCCESS;
    }
    get/set方法
    }
      

  4.   

    有人能看出我的action有什么问题吗?
      

  5.   

    我试了,map取值没问题,就是不知道传到jsp就没用
      

  6.   

    <s:form method="post" action="Tree.action" name="form1"> <s:doubleselect headerValue="--请选择省--" headerKey="1" 
    list="list_sheng" listKey="id" listValue="name" doubleName="shi" 
    doubleList="cityMap.get(top.id)" doubleListKey="code" doubleListValue="name"/> <s:submit value="提交"/> 
    </s:form> 
    这个是楼主的Struts2的doubleselect标签
    如果楼主的map取值没有问题的话!~!你就试试把headerKey="1"改成headerKey="-1"试试!~
    然后再用9楼的代码测试一下!~
      

  7.   

    必须写formName属性,我也碰到这个问题,刚解决完
    <s:form method="post" action="Tree.action" name="form1"> <s:doubleselect headerValue="--请选择省--" headerKey="1" 
    list="list_sheng" listKey="id" listValue="name" doubleName="shi" formName="form1" 
    doubleList="cityMap.get(top.id)" doubleListKey="code" doubleListValue="name"/>