在之前做好的地址管理功能中,我们是通过:addressDefault.equals(receiveForm.getAddressId()),使用这个方法有一个问题就是addressDefault的值一旦为空调用equal方法时,程序就会崩溃,所以为了保证程序不出错的情况我们用后者调用equal方法,因为后者永远不空。但是之前选用的方法在有时也是采用的,因为在特定情况下,我们规定前边的值不能为空,这样,如果出现异常,我们可以捕捉并提示相应的消息,让用户或者程序员找到对应的问题解决。
在之前的功能实现中,我们一直没有实现textarea控件的传值,textarea控件的传值需要使用th:text属性值来绑定对应的数据值即可。textarea控件有row属性和col属性分别控制对应的textarea的行和列的值。表格中的thead标签一般和tbody标签以及tfoot标签一起使用,tbody 元素用于对 HTML 表格中的主体内容进行分组,而 tfoot 元素用于对 HTML 表格中的表注(页脚)内容进行分组。thead标签的align属性是用来指定数据的水平对齐方式的,valign属性是用来设置数据的垂直对齐方式的(有top、bottom、baseline、middle)searchAlipayImmediately。
在购物栏的中实现购物栏内商品的分页功能的办法是:
public List<Integer> searchOrderListCount(CartForm frm) { //返回一个整型的list
Double count = queryDao.executeForObject("Cart.selectAlipayHistoryListCount", frm, Double.class);
List<Integer> list = new ArrayList<>();
Integer pages = (int) Math.ceil(count/5); //ceil函数实现向上取整的功能,当不足五个时按一页呈现。
for (int i=1; i<=pages; i++) {
list.add(i);
}
return list;
}
上边的sevice实现了一个购物栏页面的计算并将页面数放入一个表中,然后显示在页面上,这里值得注意的sql文中使用的是 count,用这个函数实现统计购物栏商品的数量,具体代码如下:
SELECT count(0)
FROM alipay_history WHERE commodity_id is null
AND guest_id = #guestId#
ORDER BY update_time DESC
在sql文中如果某一项为固定值时,可以用where 属性 is 固定值。之前的代码实现的功能只是显示商品共分为几页,要实现页面只显示固定商品数量,可以实现翻页功能的代码是下面的service中的方法:
public List<AlipayForm> searchOrderList(CartForm frm, Integer index) {
List<AlipayForm> result = queryDao.executeForObjectList("Cart.selectAlipayHistoryList", frm, index*5, 5);
return result;
}
注意使用queryDao.executeForObjectList方法中加入了新的参数,(index*5, 5),这两个参数实现的是从第几个开始往后选择五个。在sql文中并没有使用zhe两个参数,所以这两个参数是这个方法内部实现功能时使用的。这里的index是页面的页数。
对于某个数据类型的表的循环使用方法:CartForm item:list
for (CartForm item : list) {
body = body + "品名:" + item.getCommodityName() +", 数量:"+ item.getCount() +", 总价:"+ String.valueOf(Double.valueOf(item.getCount())*Double.valueOf(item.getRetailPrice())) +";";
price = price + Double.valueOf(item.getCount())*Double.valueOf(item.getRetailPrice());
}