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
クリックして変更をキャンセルできない場合の問題です ( ajax 呼び出しが発生したときに保存されます)。Cancel
Order
Order
インスタンスを保存せずに計算を実行する方法を誰かが提案できますか?