0

私のドメインモデルの一部には、Conversation多くChatMessageのがあります

私のindex.gspには次のものがあります:

<g:each in="${allConversations}" var="conversation">
        ${conversation.chatMessages}
    </g:each>

特定のユーザーのすべての会話を表示するには、チャット メッセージを次のように出力します。

[hi, how are you][another convo, hi again]

これが正しい結果です。しかし、私は各会話の最初のメッセージだけを取得したい. 私が試してみました

${conversation.chatMessages[0]}

${conversation.chatMessages.get(0)}

しかし、役に立たない。これの正しい構文は何ですか?

4

1 に答える 1

2

会話内の個々のメッセージをインデックスで参照できるようにしたい場合は、関連付けをリストとして宣言する必要があります。

class Conversation {
  static hasMany = [chatMessages: ChatMessage]

  List chatMessages

  // constraints, mapping, other properties...
}

hasManyなしでのみがあるList chatMessages場合、関連付けはリストではなくセットとしてマップされます。これにより、反復できますが、インデックスによるアクセスはできません。

詳細については、grails ドキュメントのセット、リスト、およびマップを参照してください。

于 2013-03-10T12:31:55.957 に答える