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

本文介绍了一种利用Flash对象来实现临时数据传递的方法,特别适用于校验销售订单数量是否超过库存数量的场景。通过具体代码示例展示了如何在Grails框架中使用Flash属性来反馈错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值