2011-12-12 19 views
0

私は自分のアプリケーションを開発するためのstruts2です。アクションクラスの サンプルコードが異なるリクエスト間でアクション変数の値を維持する

class sampleAction extends Action { 
private List<Employee> employee; 
public validate(){ 
--logic for validation 
} 
public String prepopulate(){ 
--logic for populating value of employee list 
} 
--getters and setters 
} 

だろう今私の問題は、私は事前移入関数を呼び出すと、従業員リストの値を移入ページのロードにあります。ページ提出後validateメソッドが呼び出され、その間に何らかのエラーが発生した場合、コントロールはjspにリダイレクトされます。今回は従業員リストの値が空です。私はこのリストをstruts2のautocompleterタグに使用しています。

答えて

4

余分な往復を避けるためにクライアント側の検証が好きなので、私はStruts 2組み込み検証メカニズムを使ったことがありません。これは純粋に個人的な選択であり、標準ではありません。

最初にActionを使用せず、ActionSupportを使用することをお勧めします。ActionSupportは、すぐに使用できる多くの機能を提供し、すべてを自分で行う必要はありません。

私はあなたがdefaultStackを使用していると仮定しています。これは、アクション自体が呼び出される前にすべての値を準備しているPrepare Interceptorのボックスの外で提供されます。

executeメソッドの前に呼び出されるため、JSPで必要な値を再入力することはありません。

アクションクラスにprepare()メソッドがあることを確認する必要があります。ここでは、この迎撃のための詳細は以下のとおりです。クライアント側の検証に*のみ*頼る

Prepare Interceptor
FAQ: How do we repopulate controls when validation fails

+1

は本当に悪い考えです - データ*は*クライアント - かどうかをサーバー側で検証する必要がありますサイド検証が行われます。 –

+0

@DaveNewton agree !!!最初のチェックでデータを検証してから、ほとんどの検証フレームワークが同じようになっているはずです。サーバー側の特定の条件についてデータを確認していますが、答えは0 –

+0

ありがとうございます。私のページでは、jspページの読み込みにいくつかのドロップダウンを設定したいと思います。同じアクションクラスに存在するアクションメソッドを介してjspをロードしています。準備メソッドもこのケースと呼ばれますか?それともフォーム提出後にのみ呼び出されますか? –

関連する問題