顾客端中有一个我的订单,显示已经点了的菜品,点了菜的话会把这个菜品的信息放入到餐桌的缓存中,我的订单的菜品是从这个缓存中取出来的。进入我的订单是个刷页,就是把需要的信息放在model里返回给jsp页面。jsp页面中有input标签,刚弄好了已测试报错,错误是数字格式异常(java.lang.NumberFormatException),提示的话是input的数字格式异常。我想了一下原因,如果什么都没点的话进入我的订单页面那model中返回的是一个null对象,那么在input里的话可能就会数显格式异常的错误,然后我用jstl标签加了一个判断,判断是否为空,不为空的话再用foreach循环遍历。遍历过程中也存在着对象对应的属性为空的可能,如果存在这种可能的话input我估计还会报错,所以也要在必要的地方加上判断,不为空则在input标签里面的name属性中写上${XXX.xx},为空的话则input一个默认值即可。于是第一种错误解决了。
之后运行又报了一种错误(javax.servlet.jsp.JspTagException), 百度了一下这个异常,发现是jstl标签用的不对,我想用if标签判断,若不为这种情况则用otherwise标签,但是otherwise标签是when的子标签,若想实现if else控制则要用choose,when和otherwise这三个标签进行控制,没用choose是不行的,因为其余的两个标签是它的子标签,必须配套使用,于是把if改成when再加上choose标签问题就解决了。
我的订单已经点的菜品可以正常显示了,但是已下单金额不对,我回在方法里打了断点测试了一下,觉得赋值可能出现了错误,我的今个是BigDeciml对象,刚开始我用的加法运算就是一个XXX.add(数值),我觉得可能是这个问题,然后我给改成了XXX=XXX.add(数值),问题得到了解决。