在我的应用程序中,许多类都有公共(public)字段“公司”。当应用程序保存该对象时,它们必须填写公司(对此进行了验证)。公司也开会。现在,当我想使用域类作为命令对象时,公司必须已填写,否则我会收到验证错误。有什么方法可以在进行任何验证之前始终填写公司字段,这样我就不必每次都手动执行此操作。 (我尝试了自定义数据绑定(bind)器,但是当请求中没有参数时它不起作用)
最佳答案
您可以在保存、更新或验证对象之前使用GORM events设置该属性。 beforeInsert
、beforeUpdate
或 beforeValidate
。
在您的域中,您需要类似的东西:
import org.springframework.web.context.request.RequestContextHolder
class Foo {
String company
...
def beforeInsert = {
try {
// add some more error checking (i.e. if there is is no request)
def session = RequestContextHolder.currentRequestAttributes().getSession()
if(session) {
this.company = session.company
}
} catch(Exception e) {
log.error e
}
}
}
关于data-binding - Grails,使用 session 中的值注入(inject)/填充域对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10829033/