1

Web アプリケーションがあり、データを取得するためにフロントエンドがサーバーに ajax リクエストを行います。コントローラーには、次のロジックがあります。

def data = []

def method() {
  def objects = []
  ...
  from params determine if it is a first request
  ...
  if (firstRequest) {
    objects = someService.getObjectFromDB()
    data = objects
  } else {
    actions with data object
  } 

dataしかし、問題は、最初のリクエスト中に必要な情報を入力したにもかかわらず、 2 つ以上のリクエストが空のリストであることです。dataobject is 2+ リクエストを使用するにはどうすればよいですか?

4

2 に答える 2

3

次のように、データ オブジェクトをユーザー セッションに保存します。

session.data = objects

そして、データのメソッドチェックを入力すると、すでにそこにあります..

if (!session?.data) {
    // first request
    objects = someService.getObjectFromDB()
    session.data = objects
} else {
    // retrieve data from session
    def oldData = session.data
    // do something
}

セッションに多くの情報を保存するため、これはおそらく最善の解決策ではありません。最小限に制限するようにしてください。

于 2013-03-27T20:30:14.083 に答える
1

上記のロジックをコントローラーからサービス クラスに移動することをお勧めします。これを行う利点: -

1.サービスはデフォルトでシングルトンです。requestリクエストごとにグローバル データへのハンドルを取得する結果としてスコープを設定できます。

2. セッションがデータで過負荷になることはありません。

params3.最良の部分:- &/|を渡すことができます。request(コントローラーのデフォルト) をメソッド呼び出しのサービス レイヤーに送信します。

于 2013-03-28T01:45:09.713 に答える