生成一个年份与月份的下拉框,并且获取每次选中的值。
Html代码:
<select wicket:id="selectYear"></select>
<select wicket:id="selectMonth"></select>
因为年份与月份数字比较常规,所以我们可以自己写方法来填充选择框的值。
Java代码:
class Page{
//年份下拉框
private DropDownChoice<Integer> yearSelect;
//月份下拉框
private DropDownChoice<Integer> monthSelect;
//定义存储选择的年份,月份
private int selectedYear;
private int selectedMonth;
public Page(){
//年份下拉框初始化
yearSelect=createYearSelect("selectYear");
//月份下拉框初始化
monthSelect=createMonthSelect("selectMonth");
//加载到页面
this.add(yearSelect);
this.add(monthSelect);
}
//年份与月份的生成方法
//编写年份的生成方法
private DropDownChoice createYearSelect(String id){
//建立存储年份的列表
ArrayList<Integer> yearList=new ArrayList<Integer>();
//利用Calender类的方法,获取年份时间
Calendar cal = Calendar.getInstance();
//获取当前年份
int currentYear=cal.get(Calendar.YEAR);
//设置年份限度为5年
int startYear=currentYear-4;
//将年份加入ArrayList中去
for(int i=currentYear;i>=startYear;i--){
yearList.add(i);
}
final DropDownChoice yearSelect=new DropDownChoice(id,new Model<Integer>(),yearList);
//当发生改变时,将选中年份赋值
yearSelect.add(new AjaxFormComponentUpdatingBehavior("onChange") {
protected void onUpdate(AjaxRequestTarget target) {
//当选择框内容发生改变时,捕获到选择的内容,并且转换成int保存
selectedYear = Integer.parseInt(yearSelect.getModelObject().toString());
}
});
yearSelect.setRequired(true);
yearSelect.setOutputMarkupId(true);
//默认载入当前年份
yearSelect.setModelObject(currentYear);
//初始选中项
selectedYear = currentYear;
return yearSelect;
}
//编写月份的生成方法
private DropDownChoice createMonthSelect(String id){
//创建月份列表
ArrayList<Integer> monthList=new ArrayList<Integer>();
//依次存储月份到列表
for(int i=1;i<13;i++){
monthList.add(i);
}
//获取时间的方法
Calendar cal=Calendar.getInstance();
int currentMonth=cal.get(Calendar.MONTH)+1;
//创建DropDownChoice对象,最终返回
final DropDownChoice monthSelect=new DropDownChoice(id,new Model(),monthList);
//获取当前选中的月份操作
monthSelect.add(new AjaxFormComponentUpdatingBehavior("onChange") {
protected void onUpdate(AjaxRequestTarget target) {
selectedMonth = Integer.parseInt(monthSelect.getModelObject().toString());
}
});
monthSelect.setRequired(true);
monthSelect.setOutputMarkupId(true);
//默认载入当前月份
monthSelect.setModelObject(currentMonth);
//初始选中项
selectedMonth=currentMonth;
return monthSelect;
}
}