grails プロジェクトの任意のコントローラーから取得および設定可能な配列を作成する方法はありますか? どんなアイデアでも大歓迎です!
3 に答える
配列を作成して、ブートストラップのgrailsApplicationに配置する(または遅延して作成する)ことができます。どのコントローラーでも、grailsApplicationからその配列を使用できます。
で配列を定義/初期化してから、任意のコントローラConfig.groovy
で使用して配列にアクセスできます。grailsApplication.config
それは私の頭のてっぺんからちょうど1つの方法です...
アップデート
Bootstrapを使用した別の簡単な例を次に示します。
Bootstrap.groovy
class BootStrap {
def grailsApplication
def init = { servletContext ->
grailsApplication.config.myArray = []
}
def destroy = {
}
}
一部のコントローラー
class TestController {
def addItem() {
grailsApplication.config.myArray << "Value ${grailsApplication.config.myArray.size()}"
render grailsApplication.config.myArray
}
}
ただし、このアプローチを使用する場合は注意が必要です。GroovyはデフォルトでArrayListを使用しますが、これはスレッドセーフではなく、同時変更の例外が発生する傾向があります。同時実行が必要な場合は、追加/削除を同期メソッドでラップするか、イベントハンドラーなどを使用して非同期イベントを公開する必要があります。
「gettableandsettable」とは、任意のコントローラーがアレイの個々の要素を変更できるようにすること、またはコントローラーがアレイを別のアレイに完全に置き換えて、変更を他のユーザーに表示できるようにすることを意味します。コントローラー?
「Grailsの方法」は、サービス内に配列をカプセル化し、それを介して配列にアクセスすることです。サービスは、一貫性を保つために必要な同期を処理します。潜在的にデータがある場合は、何らかの同期が必要になります。複数のスレッドによって同時に変更されました。または、データベースにデータを保存して、トランザクションの更新を処理できるようにします。
より具体的な答えを出すには、この共有アレイがサポートすることを目的としたユースケースを知る必要があります。