0

我有一种从数据库中获取国家/地区名称列表的方法,以及一种为任何提供的国家/地区获取州名的方法。但不确定如何链接国家和州。

    <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”和类似“statenames”的数组列表,但不确定如何根据在上述国家/地区列表中选择的国家/地区动态生成州名,以及如何将获取的国家/地区名称连接到明确调用的方法该国的州名单。

4

1 回答 1

0

我想给你一些建议

  1. Struts2 Dojo 插件不再处于开发阶段并且已被弃用,因此我建议您不要使用它,否则您可以将普通 DOJO 与 struts2 一起使用。

有一个 Jquery 插件正在积极使用中,它将为您提供您正在寻找的大部分功能,请查看A_simple_Doubleselect_with_Topics

我不是这个插件的忠实拥护者,因为它在实现上限制了我们很多,尽管它为我们提供了很多好的小部件和功能

我的建议是使用以下方法

  1. 添加Struts2-JSON插件,以便从 action 中发回 JSOn 数据。
  2. 用户使用简单的 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);
   }
});
            });

动作类

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;
  }
}
于 2012-09-02T06:54:52.530 回答