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

时间:2012-09-02 05:27:37

标签: ajax autocomplete struts2

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

    <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')}"/>

我有名为'countrynames'的arraylists和类似'statenames',但不知道如何根据上述国家/地区列表中的国家/地区选择动态生成状态名称,以及如何将获取的国家/地区名称连接到方法明确地呼叫该国家的州名单。

1 个答案:

答案 0 :(得分:0)

我想给你一些建议

  1. Struts2 Dojo插件不再处于开发阶段且已弃用,因此我建议您不要使用它,否则您可以使用带有struts2的普通DOJO。
  2. 有一个Jquery插件正在使用中,它将为您提供您正在寻找的大部分功能,请查看A_simple_Doubleselect_with_Topics

    我不是这个插件的崇拜者,因为虽然它为我们提供了很多优秀的小部件和功能,但它限制了我们很多实现

    我的建议是使用以下方法

    1. 添加Struts2-JSON插件,以便从操作中发回JSOn数据。
    2. 用户简单的Jquery将数据发送到服务器并获取JSON,并在Jquery JSON解析技术的帮助下填充第二个下拉列表。
    3. 在第一个下拉列表中添加一个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);
         }
      });
                  });
      

      行动类

      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;
        }
      }