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