- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Grails 的新手,我需要在“有很多”属性发生变化时进行一些计算,我认为最好的地方是在属性的 setter 中,因为我的属性是一个列表最好的地方应该在 addTo 和 removeFrom 方法中,我试图覆盖它们但没有成功。
那么这是最好的方法吗?我的代码有什么问题?
代码如下:
Cicle.groovy
class Cicle {
String machine
int cicleValue
static hasMany = [measurements:Measurement]
static constraints = {
machine blank:false
cicleValue nullable:false
}
public void addToMeasurements(Measurement measurement){
super.addToMeasurements(measurement)
updateCalculations()
}
public void updateCalculations(){
int sumCicles = 0
measurements.each{ measurement ->
sumCicles += measurement.cicleValue
}
cicleValue = sumCicles / measurements.size()
this.save(failOnError: true)
}
}
这是我得到的异常:
No signature of method: com.rpc.mock.app.Cicle.addToMeasurements() is applicable for argument types: (com.rpc.mock.app.Measurement) values: [com.rpc.mock.app.Measurement : (unsaved)]
Possible solutions: addToMeasurements(com.rpc.mock.app.Measurement), addToMeasurements(java.lang.Object), getMeasurements(). Stacktrace follows:
Message: No signature of method: com.rpc.mock.app.Cicle.addToMeasurements() is applicable for argument types: (com.rpc.mock.app.Measurement) values: [com.rpc.mock.app.Measurement : (unsaved)]
Possible solutions: addToMeasurements(com.rpc.mock.app.Measurement), addToMeasurements(java.lang.Object), getMeasurements()
Line | Method
->> 16 | addToMeasurements in com.rpc.mock.app.Cicle
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 43 | $tt__save in com.rpc.mock.app.MeasurementController
| 200 | doFilter . . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1145 | runWorker . . . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 744 | run . . . . . . . in java.lang.Thread
谢谢
最佳答案
当您处理域对象时,GORM 支持将事件注册为在发生某些事件(例如删除、插入和更新)时触发的方法:
beforeInsert - Executed before an object is initially persisted to the database
beforeUpdate - Executed before an object is updated
beforeDelete - Executed before an object is deleted
beforeValidate - Executed before an object is validated
afterInsert - Executed after an object is persisted to the database
afterUpdate - Executed after an object has been updated
afterDelete - Executed after an object has been deleted
onLoad - Executed when an object is loaded from the database
然后,您可以像这样在域对象中添加 updateCalculations()
:
static constraints = {
machine blank:false
cicleValue nullable:false
}
def beforeUpdate() { updateCalculations() }
作为一般的良好设计实践,最好将逻辑实现从域对象中分离出来,并且 Grails 允许将服务注入(inject)域 (POGO)。
关于grails - 覆盖 addTo 和 removeFrom 以监听 Grails 中属性的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315480/
我有一个我认为很简单的问题,但一直无法解决... 出于某种原因,我有一个使用 removeFrom*.save() 的 Controller ,它不会引发任何错误但不执行任何操作。 运行 chalic
问题在主题中。 目前,我观察到的行为是当我调用 Parent.removeFromChilds(child) , child 没有从我的数据库中删除(即我可以用 Child.findBy...(arg
在我的申请人域类中,我有以下内容: static hasMany = [recommendationFiles:ApplicantFile] static mapping = {recommendat
我是 Grails 的新手,我需要在“有很多”属性发生变化时进行一些计算,我认为最好的地方是在属性的 setter 中,因为我的属性是一个列表最好的地方应该在 addTo 和 removeFrom 方
我尝试重写 Grails/GORM 提供的动态方法 addTo* 但它似乎不起作用。 这是代码: class Match { static hasMany = [players: Player
自从 Leaflet 0.7.7 升级到 1.0.0-rc3 后,我得到了 Uncaught TypeError: info.removeFrom is not a function。有问题的 inf
我是一名优秀的程序员,十分优秀!