Web からデータを取得しています。必要なフィールドを変数に入れることができました。それらをコレクションに入れるにはどうすればよいですか?エキスパンドを使用する必要がありますか? 私はモデルクラスを持っていません。ある種のコレクションを使用して、それらを GSP ページに出力することを考えています。
質問する
175 次
3 に答える
3
Groovy Mapsを使用できます。
[foo1: bar1, foo2: bar2, .....]
Expando は、動的オブジェクトの作成に役立ちます。
def myExpando = new Expando()
myExpando.name = "Test User"
myExpando.app = "Grails"
myExpando.task = {
"Hello, $name. Have you read the $app docs yet?"
}
println myExpando.task()
myExpando.app = "Groovy"
println myExpando.task()
出力:
Hello, Test User. Have you read the Grails docs yet?
Hello, Test User. Have you read the Groovy docs yet?
ビューレイヤーで上記の動的プロパティが必要な場合は、Expando を使用できます。
于 2013-05-16T18:22:27.823 に答える
1
Expando を使用することは可能ですが、お勧めしません。マップ ([:]) は、同じ量の機能を提供し、一般的に使いやすくなっています。また、コレクション、この場合はマップのみを使用してデータを転送することは、本当に悪い習慣だと思います。ただし、a) ごくわずかなデータ、または b) データが構造化されておらず、簡単に配置できない場合を除きます。モデルに。
個人的には、データを保持するクラスを作成するだけです。話しやすく、維持しやすい。
例:
class Result {
String name
String value
}
次のようなコントローラーアクションで使用するもの:
def oneResult() {
return [result:new Result(name:'my name', value: 'my value')]
}
また
def manyResults() {
return [result:[
new Result(name:'my name1', value: 'my value1'),
new Result(name:'my name2', value: 'my value2'),
new Result(name:'my name3', value: 'my value3')
]]
}
どちらも、GSP ページで「結果」名を使用して参照できるモデルを返し、またはを使用して結果の内容をループできます。
于 2013-05-16T18:50:55.937 に答える