2016-04-21 4 views
0

私はgroovy userControllerと_listMyUsers.gspを持っています。 _listMyUsers.gspは戻ってGSPに次は、あなたが検索条件のパラメータをカスタマイズするGSPのコントロールを使用することができます返す単純な基準ビルダーがあるUserControllerで(検索)でコントローラへの余分な呼び出しを避けるためにjson/modelオブジェクトを再利用する

<g:dojoRemoteForm 
      formName="userSearchForm" 
      id="userSearchForm" 
      url="[controller:'user',action:'search']" 
      update="[success:'content']"> 

方法を使用しています(param.field_nameとしてコントローラに渡された):

render (template:"listUsers", 
      model:[ 
        users:users, 
        userTypes:UserTypeLookup.list(), 
        sortby:params.sortby, 
        direction:nextDirection, 
        currentDirection:sortDirection, 
        pager:pager, 
        organizations:orgs, 
        userType:userSearchTypes 
      ]) 

さて、これはすべての偉大な作品とモデルは、その後、私のUSERSLISTテーブルを構築するために使用されます。私の問題は、ユーザーのデータを編集するために結果内のユーザーの1人をクリックしたときに表示されます。保存が完了し、メインのlistUsersテーブルに戻ります。しかし、選択範囲内のすべてのsearchCriteriaを 'ALL'としてワイルドカード化して検索メソッドを再実行します(したがって、DB内のすべてのユーザーが返されます)。
私のユーザーの編集が終了したときに元の「検索」がそこに残っているので、UIユーザーが元に戻って再実行する必要がないように、返される最初の「カスタム」検索をどのように保持できますかそのuserSearch基準を再度指定しますか? ありがとう、

答えて

1

Grails Cache Pluginがこちらに役立つかもしれません。メソッドの引数としてユーザのクエリパラメータを使用して、キャッシュのキーとして使用できるように、searchアクションの出力をキャッシュすることができます。 searchアクションは、最新のデータを返しますので、

@Cacheable('searchResults') 
def search(String sortBy, String sortDirection /* other parameters */) { 
    // render the output 
} 

次に、あなたの保存アクションで、あなたは、searchResultsキャッシュをクリアするCacheEvictアノテーションを使用することができます

@CacheEvict(value='searchResults', allEntries=true) 
def saveUser() { 
    //save the user and return a response code 
} 

は、指定の詳細についてはplugin documentationを参照してください。キャッシュ内のアイテムを取り除くなどしてください。

関連する問題