-1

就凡人而言,我指的是系统的用户(非开发人员)。审计日志插件很漂亮,但困扰我的一件事是我不能完全为我们的客户定制它。例如,我不想显示更改了哪些字段的表格等。我想将其转换为普通人可以轻松阅读的句子。问题是,我如何使用事件监听器来做到这一点?描述中的示例做了我想要的,我只是还不知道如何将它传递给控制器​​并在 gsp 中显示它。我现在不能给你看一些示例代码,因为我现在正在打电话。所以也许以后我回家的时候。抱歉,我有什么想法可以实施吗?

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 回答