Jsp 比较下拉列表中util.Date的月份、年份部分
在我的web应用程序中,客户对象具有与信用卡信息相关的字段Jsp 比较下拉列表中util.Date的月份、年份部分,jsp,drop-down-menu,comparison,el,Jsp,Drop Down Menu,Comparison,El,在我的web应用程序中,客户对象具有与信用卡信息相关的字段 public class Customer { ... private String ccType; private Date ccExpirationDate; ... } 在jsp页面中,我提供了下拉列表来选择信用卡类型、到期月份、到期年份。 我想检查客户是否存在于会话中,如果存在,则其信用卡类型和到期日期的月、年部分与下拉列表中的任何选项匹配,然后这些选项显示为选中 在实现ServletConte
public class Customer {
...
private String ccType;
private Date ccExpirationDate;
...
}
在jsp页面中,我提供了下拉列表来选择信用卡类型、到期月份、到期年份。
我想检查客户是否存在于会话中,如果存在,则其信用卡类型和到期日期的月、年部分与下拉列表中的任何选项匹配,然后这些选项显示为选中
在实现ServletContextListener的类的contextInitialized()方法中,我创建了如下映射
Map<String,String> cardtypes = new TreeMap<String,String>();
cardtypes.put("M0", "MasterCard");
cardtypes.put("D0", "Discover");
...
Map<String,String> expiryMonths = new TreeMap<String,String>();
expiryMonths.put("01", "January");
expiryMonths.put("02", "February");
...
Map<String,String> expiryYears = new TreeMap<String,String>();
for(int i=2011;i<2030;i++){
String year = Integer.toString(i+1);
expiryYears.put(year,year);
}
...
sc.setAttribute("ccyears", expiryYears);
sc.setAttribute("ccmonths", expiryMonths);
sc.setAttribute("cctypes", cardtypes);
Map cardtypes=new TreeMap();
卡片类型。放入(“M0”、“万事达卡”);
cardtypes.put(“D0”、“Discover”);
...
Map expiryMonths=new TreeMap();
到期月份认沽期权(“01”、“1月”);
到期月份认沽权证(“02”、“2月”);
...
Map expiryYears=newtreemap();
对于(int i=2011;i关于月份,有两个原因:
- 以0为基础。一月为0,二月为1,以此类推
- 您已将月份映射键前缀为0。01的值与1不同。因此,在下拉选项“十月”和“十一月”中,它仅与十一月和十二月的月份匹配
多年来,有一个原因:
- 是基于1900的。2011返回111,2012返回112,等等。111的值与2011不同,因此它永远不会匹配
因此,请相应地修改代码:
expiryMonths.put("1", "January");
expiryMonths.put("2", "February");
// ...
在艾尔
(customer.ccExpirationDate.month + 1) == ccmonth.key
及
(您现在可能会更好地理解为什么Date
是一个彻底的epic失败,并被弃用)
(customer.ccExpirationDate.month + 1) == ccmonth.key
(customer.ccExpirationDate.year + 1900) == ccyear.key