Ajax 如何根据国家/地区组合框中的国家/地区选择动态生成组合框?

Ajax 如何根据国家/地区组合框中的国家/地区选择动态生成组合框?,ajax,autocomplete,struts2,Ajax,Autocomplete,Struts2,我有一个从数据库中获取countryname列表的方法,还有一个为任何提供的countryname获取StateName的方法。但不知道如何将国家和州联系起来 <sx:autocompleter list="countrynames" name="employee.countryname" value="%{employee.countryname}" label="%{getText('label.countryname')}"/> <sx:autocomp

我有一个从数据库中获取countryname列表的方法,还有一个为任何提供的countryname获取StateName的方法。但不知道如何将国家和州联系起来

    <sx:autocompleter list="countrynames" name="employee.countryname" value="%{employee.countryname}" label="%{getText('label.countryname')}"/>

    <sx:autocompleter list="statenames" name="employee.statename" value="%{employee.statename}" label="%{getText('label.statename')}"/>


我拥有名为“countryname”和类似“StateName”的ArrayList,但不确定如何根据上述国家/地区列表中国家/地区的选择动态生成国家/地区名称,以及如何将获取的国家/地区名称连接到显式调用该国/地区国家/地区列表的方法

我想给你一些建议

  • Struts2 Dojo插件还没有开发出来,已经被弃用,所以我建议您不要使用它,否则您可以将普通Dojo与Struts2一起使用
  • 有一个Jquery插件正在使用中,它将为您提供您正在寻找的大部分功能,请看一看

    我并不十分欣赏这个插件,因为它在实现上限制了我们很多,尽管它为我们提供了很多好的小部件和特性

    我的建议是采用以下方法

  • 添加插件,以便从操作返回JSOn数据
  • 用户可以使用简单的Jquery将数据发送到服务器并返回JSON,并借助Jquery JSON解析技术填充第二个下拉列表
  • 在第一个下拉列表中添加一个on change事件,并创建一个函数,用于填充第二个下拉列表

    function fill statenames(countryID)
    var formInput='country='+countryID;     
    $.getJSON('search/getStateNames',formInput,function(data) {
        $("#employee.statename  option:first").val("-1").text("Please select state");
        $('.result').html('' + data.states + '');
        $.each(data.states ,function(index, value){
        var stateid= document.getElementById("state");
        var option=new Option(value,value);
       try{
         stateid.add(option);
        }
        catch(e){
          stateid.appendChild(option);
       }
    });
                });
    
    动作类
    公共类StateListAction扩展了ActionSupport{
    私人国家;
    //接二连三
    私人名单国家;
    //接二连三
    公共字符串getStateList(){
    州=填写StateBasedOnCountry(国家);
    回归成功;
    }
    }
    
    public class StateListAction extends ActionSupport{
    
       private String country;
       // getter and setter
      private List<String> states;
       //getter and setter
    
      public String getStateList(){
        states=fillStatebasedonCountry(country);
        return SUCCESS;
      }
    }