我有一个Order
域类 ( hasMany = [items: Item]
) 和一个编辑屏幕,可让您编辑Order
.
编辑屏幕具有totalCost
通过 ajax 计算的字段,如items
添加/删除。后端计算totalCost
比较复杂(前端不能做,必须后端做),取决于:
- 编辑屏幕上未保存更改的状态
- 正在编辑的属性,
order
它们不在编辑屏幕上
所以,为了进行totalCost
计算,我做了这样的事情:
def ajaxCalculateTotalCost() {
def order = Order.get(params.id)
order.properties = params
def totalCost = // complex calculation based on params.items, logged in user and so on...
// return totalCost as JSON here
}
这样做的问题是,一旦对正在编辑ajaxCalculateTotalCost()
的Order
实例进行了 ajax 调用,就会被保存。据我了解,Spring 或 Hibernate 在 HTTP 请求结束时刷新会话???
这是一个问题,就好像用户添加/删除items
了无法通过单击Cancel
表单底部来取消更改(Order
发生 ajax 调用时已保存)。
谁能建议如何在不保存Order
实例的情况下进行计算?