2011-12-10 23 views
0

サインアップページには3つの異なる選択ボックスがあります。
最初の選択ボックスから「インド」を選択すると、「インド」のすべての状態を2番目の選択ボックスのテーブルからフェッチし、任意の状態を選択すると、その特定の状態の都市に関する情報をテーブルからフェッチする必要があります。 3番目の選択ボックス。データベースから選択ボックスに値を取得する

我々は行動にその値を送信し、国に基づいて状態をフェッチドロップダウンを形成seletedいくつかのAjax calling.When最初の値を使用するためにHibernate

public String execute() throws Exception { 
    if(externalUser.getPerson().getAddress().getCity().getState() 
        .getCountry().getId() + "" != null) { 
     degreeList = degreeDao.findAll(); 
     setCountryList((List<Country>) countryDao.findAll()); 
     setStateList((List<State>)stateDao.findAll("country_ID", externalUser.getPerson().getAddress().getCity().getState().getCountry().getId())); 
     setCityList((List<City>)stateDao.findAll("state_ID",externalUser.getPerson().getAddress().getCity().getState().getId())); 
    } else { 
     degreeList = degreeDao.findAll(); 
     setCountryList((List<Country>) countryDao.findAll()); 
    } 

    return SUCCESS; 
    } 
+0

男、あなたは本当にチェーンメソッドが好きです。デメテルはあなたに怒っているでしょう。 –

+0

(1)何かプラス '" "'は決してnullにはなりません。 (2)あなたのDAOは本当に混乱しています。まず、型セーフでなければなりません。次に、findAll()は非常にコミュニケーションが難しく、直感的ではありません。 (3) 'degreeList'と' countryList'の両方を条件式から削除することができます。 Demeterはまだ少し潔白だったが、クリーンアップされた例については無回答を参照。 –

答えて

0

行くとStruts2のを使用しています。 結果をJSONとして送信します。データは、あなたのJSP側で解析します。コンボボックスを入力します。繰り返し、同じサイクルを繰り返します。

選択boxes.hereのこのタイプを持ってStruts2の-jQueryプラグインを使用する簡単な方法は、あなたの参照のためのものである

Struts2-Jquery Plugin Select tag

私は無地のjQueryを使用してから JSONデータとして結果を送信することを好むだろう

私のアクションクラスは、JSONプラグインをstruts2に使用し、自分自身でJqueryを使用してデータを解析することで、より柔軟性と制御性が向上します。

このような深い連鎖方法を使用することは、プログラムの可読性を妨げるだけでなく、後の段階で維持するのが難しくなることはありません。

1

ない答え。コードクリーンアップ。

このメソッドを次のスニペットのように書くことを検討してください。

Demeterはまだビットになりますが、残りのコードは考えやすくなります。

public String execute() throws Exception { 
    setDegreeList(degreeDao.findAll()); 
    setCountryList(countryDao.findAll()); 

    State state = externalUser.getPerson().getAddress().getCity().getState(); 
    if (state.getCountry().getId() != null) { 
     setStateList(stateDao.findStatesForCountry(state.getCountry().getId())); 
     setCityList(stateDao.findCitiesForState(state.getId())); 
    } 

    return SUCCESS; 
} 
+1

Duke Nukemが言っているように、「aaah、もっと良い」;-)そしてはるかに明確になった。 –

関連する問題