bootstrap.groovyとコントローラを使用する標準的な方法は、ブートストラップinit()のデータを作成してDBに保存することです。コントローラは、データ、したがって、2人の間の "中間の男"はデータベースです。grailsはデータベースをサポートしていないbootstrap.groovyのコントローラモデルを作成します
しかし、bootstrap.groovyでデータを作成し、データベースに保存しない場合(これらのデータは保存する必要はないものと仮定します)、データをコントローラに注入するにはどうすればよいですかビューのレンダリングに使用できますか?
ドメインクラスのブックで簡単な例を考えてみましょう。
class BootStrap {
def grailsApplication
def List<Book> books
def init = { servletContext ->
books = new ArrayList<>()
for (int i=0; i<100; i++) {
books.add(new Book(numPages: 20))
}
}
def destroy = {
}
}
目標は/公開BookControllerへの本の彼のリストを注入することになりましたです:単にブートストラップに私はクレタ島に100冊のダミーリストをしたいです。 どうすればいいですか?私は簡単な方法や答えをどこにも見つけることができませんでした。
に対処しようとしているシナリオを明確に願っていたが、その後私は、コントローラ内(既に初期化)サービスインスタンスが利用可能であると仮定し、bootstrap.groovyないでしょう。サービス内で軽量メソッドを呼び出す必要があればOKですが、I/O操作(この場合はjsonファイルの読み込み)を行うサービス内でメソッドを呼び出す必要がある場合、私はブートストラップのような場所を考えるでしょう。 Groovyはアプリケーション起動時に最適な場所であり、データがキャッシュされていればコントローラはそのサービスを使い始めることができます –
あなたの問題を解決するための多くの正しい方法がありますが、もちろんあなた次第です。それはあなたのやり方です。少なくとも私にとってはすべて正しいです。また、データがロードされていれば(オンデマンドで)、データをロードせずにメモリに保存しておけば、サービスをチェックすることもできます。 – quindimildev