flash对象是一个map,用于保存键值对,这些数据会被保存到session中,并在下个请求结束后清除。所以说,flash是session中一个临时保存数据的map,只能传递到下一个请求,请求完毕后数据自动清除。
话不多说,先描述下业务情况:一笔进货数量是N台笔记本的进货单,创建销售单时要判断销售数量是否超出进货单商品的数量。
我的代码如下:
def number = params.number def amount = params.amount def importProduct = ImportProduct.findByNumber(number) def importProductAmount = importProduct.getAmount() def hql = "select sum(p.amount) from ExportProduct p where p.number='"+number+"'" def result = ExportProduct.executeQuery(hql) def resultAmount if (result == [null]) { resultAmount = 0 } else { resultAmount = result[0] } println resultAmount def remain = importProductAmount - resultAmount if (amount.toLong() > remain) { flash.message = "对不起,该批货物数量不够,请重新输入!!" redirect(action:"create", params:[productName:params.productName,inPrice:params.inPrice,outPrice:params.outPrice,modelNo:params.modelNo,number:params.number]) return }
这段代码是作为校验时候的,当出现amount.toLong() > remain的情况时,使用flash属性,将信息显示到前台的gsp页面,然后要记得使用return!!
例如:进货的该批次笔记本为8台,在创建销售单时一下子是10台
[img]/upload/attachment/139234/6c928ef5-a3dc-35d3-9067-ecf4392dc3ce.jpg[/img]
就会显示如下的效果
[img]/upload/attachment/139236/f24f2375-7801-36cb-bedb-cec6513282c5.jpg[/img]
相关资源:Java 面经手册·小傅哥(公众号:bugstack虫洞栈).pdf