1

grails プロジェクトの任意のコントローラーから取得および設定可能な配列を作成する方法はありますか? どんなアイデアでも大歓迎です!

4

3 に答える 3

1

配列を作成して、ブートストラップのgrailsApplicationに配置する(または遅延して作成する)ことができます。どのコントローラーでも、grailsApplicationからその配列を使用できます。

于 2012-06-26T13:43:35.000 に答える
0

で配列を定義/初期化してから、任意のコントローラ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を使用しますが、これはスレッドセーフではなく、同時変更の例外が発生する傾向があります。同時実行が必要な場合は、追加/削除を同期メソッドでラップするか、イベントハンドラーなどを使用して非同期イベントを公開する必要があります。

于 2012-06-26T13:43:16.240 に答える
0

「gettableandsettable」とは、任意のコントローラーがアレイの個々の要素を変更できるようにすること、またはコントローラーがアレイを別のアレイに完全に置き換えて、変更を他のユーザーに表示できるようにすることを意味します。コントローラー?

「Grailsの方法」は、サービス内に配列をカプセル化し、それを介して配列にアクセスすることです。サービスは、一貫性を保つために必要な同期を処理します。潜在的にデータがある場合は、何らかの同期が必要になります。複数のスレッドによって同時に変更されました。または、データベースにデータを保存して、トランザクションの更新を処理できるようにします。

より具体的な答えを出すには、この共有アレイがサポートすることを目的としたユースケースを知る必要があります。

于 2012-06-26T14:45:42.173 に答える