如何在审计日志插件中创建值对于凡人来说可读?

-1 grails

仅仅是凡人,我指的是系统的用户(非开发人员).审计日志插件很漂亮,但困扰我的一件事是我无法为我们的客户定制它.例如,我没有显示哪些字段被更改的表格,而是将其转换为普通人可以轻松阅读的句子.问题是,我如何使用eventlisteners做到这一点?描述中的示例执行我想要的我只是不知道如何将其传递给控制器​​并在gsp中显示它.我不能告诉你somr示例代码,因为我现在正在打电话.所以也许以后我回到家里.对不起任何想法我怎么能实现它?

Kel*_*lly 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
          }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并且假设您有一个页面显示有关公司的信息:

<g:objectHistory persistedObjectId="${companyInstance.id}" />
Run Code Online (Sandbox Code Playgroud)

您可以非常有创意地了解TagLib如何显示数据,忽略某些事件,显示谁进行了更改(event.actor)等.