我是靠谱客的博主 热心大门,最近开发中收集的这篇文章主要介绍JSTL,El表达式做类型的判断,提供一个解决思路项目场景:问题描述:错误尝试:解决方案:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
项目场景:
JavaWeb电商项目,商品秒杀功能,也就是商品可以有折扣价
问题描述:
一开始项目设计的时候,实体类有“商品类(Goods)”,还有其子类“特价商品类(SecKill)”,数据库查询的时候,获得的商品泛型集合“list<Goods>",但是遍历展示的时候,需要前台页面做一个商品是否属于特价商品的判断,也就是判断这个集合元素是否属于类型SecKill
public class Goods {
private int gid;
private int cid;
private String cname;//类别名称
private String gname;
private String color;
private String size;//规格
private double price;
private String description;//简介
private String full_description;//详细介绍
private String smallPic;//二级菜单图片文件名
private String pic;//中等图片图片文件名
private String bigPic;//商品详情图片文件名
private int state;//状态
private String version;//版本
private String product_date;//应该是发售时间
private int sales;
}
public class SecKill extends Goods {
private int sid;//秒杀id
private String startTime;//开始时间
private String endTime;//结束时间
private double currentPrice;//现价
}
错误尝试:
- 这不可以使用${goods instanceof SecKill},前台根本不知道后台的SecKill,EL表达式的“instanceof”在网上也没有找到用法
- 也尝试过${goods.class.name==“xx.xx.SecKill”},这家伙是想用反射吗?
- ……总之尝试了很多方法
解决方案:
虽然导师说可以引入新的函数库,但是也没有一个机遇学到,这里给大家一个解决思路:
将Goods和SecKill的父类与子类的关系改为:SecKill的对象改为Goods类的一个属性
public class Goods {
//省略其他一致的属性
private SecKill secKill;//子类成了父类的属性,这个属性!=null表示特价商品
}
这样就可以判断一个商品是否是活动商品了:
El表达式写法:${empty goods.secKill},如果为false就是说这个Goods对象secKill属性不为空,表示这个商品在搞活动!
if (data[i].secKill != null) {
context += "
<label>减 "+(data[i].price-data[i].secKill.currentPrice)+" 元</label>n";
}else if ((new Date()-new Date(data[i].product_date))/(1000*60*60*24)<17) {
context+="<label class="new_good">新品</label>";
}
思路:
将类型的判断转换为属性的判断
最后
以上就是热心大门为你收集整理的JSTL,El表达式做类型的判断,提供一个解决思路项目场景:问题描述:错误尝试:解决方案:的全部内容,希望文章能够帮你解决JSTL,El表达式做类型的判断,提供一个解决思路项目场景:问题描述:错误尝试:解决方案:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复