请更正此代码;
我有一个组合框,它是在Vaadin框架中开发并连接到SQL Server。它有3个静态值5,3,1年,请帮助我添加这三个选项的监听器并告诉我如何选择一个值(Ex = 5年),它应该显示过去5年的所有值喜欢明智的3年零1年,请帮助我。
comboDateOrigine.addListener(new Property.ValueChangeListener() {
public void valueChange(ValueChangeEvent event)
{
if (event.getProperty().getValue() != null)
{
if(event.getProperty().getValue().toString() == "5 Ans"){
comboDateOrigine.select(ListOptions.get(0));
SELECT DateOrigine from WebProject
where DateOrigine = (Current date - (5years ) )
}
else if(comboDateOrigine.getValue().toString() == "3 years"){
comboDateOrigine.select(ListOptions.get(1));
SELECT DateOrigine from WebProject
where DateOrigine = (Current date - (3 years ) )
}
else if(comboDateOrigine.getValue().toString() == "1 year"){
comboDateOrigine.select(ListOptions.get(2));
SELECT DateOrigine from WebProject
where DateOrigine = (Current date - (1years ) )
}
}
else{
// Reset the ComboBox
comboDateOrigine.setValue(null);
}
}
});
comboDateOrigine.setImmediate(true);
答案 0 :(得分:0)
首先我建议使用
comboDateOrigine.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
//...
}
);
然后要获取所选值,我不知道这个组合是如何制作的(自定义项目,项目来自数据库等)但是
comboDateOrigine.getValue();
给出用作" id"的属性值。如果你的组合框使用"复杂的"项目也许你可以获得更好的属性来进行查询,比如
Item selectedItem = comboDateOrigine.getContainerDataSource().getItem(comboDateOrigine.getValue());
Integer year = (Integer)selectedItem.getItemProperty("year").getValue();
有关操纵日期的参考资料,请参阅此片段
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, 1);
c.getTime(); //-> gives the date+1 back
关于实际查询,请查看PreparedStatement类&合。 这应该是一个很好的起点。