【发布时间】:2014-08-25 11:45:29
【问题描述】:
我有一个 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() 进行了ajax 调用,正在编辑的Order 实例就会被保存。据我了解,Spring 或 Hibernate 在 HTTP 请求结束时刷新会话???
这是一个问题,好像用户添加/删除了items,但无法通过单击表单底部的Cancel 取消更改(发生ajax 调用时Order 已保存)。
谁能建议如何在不保存Order 实例的情况下进行计算?
【问题讨论】:
标签: grails grails-orm domain-object