-1

そして、単なる人間として、私はシステムのユーザー (非開発者) を指しています。監査ログ プラグインは美しいのですが、クライアント向けに完全にカスタマイズできないことが 1 つ気になります。たとえば、どのフィールドが変更されたかなどの表を表示するのではなく、一般の人間が簡単に読める文章に変えたいと考えています。問題は、イベントリスナーでそれを行うにはどうすればよいですか? 説明の例は、コントローラーに渡してgspに表示する方法をまだ知りません。私は今電話中なので、somr サンプル コードを表示することはできません。だから多分後で私が家に帰ったとき。申し訳ありませんが、どのように実装できますか?

4

1 に答える 1

5

プラグインが変更を記録する方法を変更するのではなく、監査ログ オブジェクトから読み取って履歴を表示する TagLib を作成することで、このようなことを行いました。次に、履歴を表示する任意のページに TagLib を配置し、オブジェクト ID を渡します。

//Import into your TagLib
import org.codehaus.groovy.grails.plugins.orm.auditable.AuditLogEvent


//Basic TagLib idea
def objectHistory = {attrs->
    if(attrs.persistedObjectId) {
        def events = AuditLogEvent.findAllByPersistedObjectId(attrs.persistedObjectId, [sort:"dateCreated",order:"desc"])
        if(events.size() > 0) {
          events.each{event->
            out << event.propertyName
            out << ' changed on '
            out << event.dateCreated
            out << 'The old value was '
            out << event.oldValue
            out << ' and the new value is '
            out << event.newValue
          }
        }
    }
}

また、会社に関する情報を表示するページがあるとします。

<g:objectHistory persistedObjectId="${companyInstance.id}" />

TagLib にデータを表示する方法、特定のイベントを無視する方法、変更者 ( event.actor)を表示する方法などについて、かなりクリエイティブになることができます。

于 2012-06-06T17:51:42.170 に答える