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