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 プラグインは開発中ではなく、非推奨であるため、それを使用しないことをお勧めします。それ以外の場合は、struts2 でプレーンな DOJO を使用できます。

アクティブに使用されている Jquery プラグインがあり、探している機能のほとんどを提供します。 A_simple_Doubleselect_with_Topicsをご覧ください。

このプラグインは多くの優れたウィジェットと機能を提供してくれますが、実装に多くの制限があるため、私はこのプラグインの大ファンではありません。

私の提案は、次のアプローチを使用することです

  1. Struts2-JSONプラグインを追加して、アクションから JSOn データを送り返すようにします。
  2. シンプルな Jquery を使用してデータをサーバーに送信し、JSON を取得し、Jquery JSON 解析手法を使用して 2 番目のドロップダウンを埋めます。

最初のドロップダウンに変更時イベントを追加し、2 番目のドロップダウンに入力する関数を作成します

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 に答える