利用grails的flash属性简单实现前台校验功能

xiaoxiao2022-06-11  62

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
转载请注明原文地址: https://www.6miu.com/read-4930666.html

最新回复(0)