请参见下面的代码:
<h:selectOneMenu id="countries" value="#{countryBean.selectedCountry}" onchange="submit()
valueChangeListener="#{countryBean.changeCountry}">
<f:selectItems value="#{countryBean.countries }" />
</h:selectOneMenu>
辅助Bean
public void changeCountry(ValueChangeEvent event){
String newValue = (String)event.getNewValue();
String oldValue = (String)event.getOldValue();
System.out.println("New Value : " + newValue);
System.out.println("Old Value : " + oldValue);
if ("1".equals(newValue)){
this.countries = new ArrayList<SelectItem>();
this.cities.add(new SelectItem("1","Delhi"));
this.cities.add(new SelectItem("2","Mumbai"));
}
if ("2".equals(newValue)){
this.cities = new ArrayList<SelectItem>();
this.cities.add(new SelectItem("1","Mossco"));
}
}
请让我知道如果实现是正确的。它工作正常。 我的问题是:
- 什么是添加f的优势:selectOneMenu用于标签:在^h内valueChangeListener标签。我使用了正常的属性valueChangeListener =“#{countryBean.changeCountry}”。
- 是否有必要使用的onchange =“提交()这个代码更改数值。
- 是什么通过实现ActionListener接口编写自定义的听众,只是使用的UIComponent标签的属性之间的差异(动作=“方法名”)。 请给我解释一下。
我的意见是,当我们提交表单时,单独的侦听器实现是有用的,有多个组件的值会发生变化。我们可以在processValueChange方法中做到这一点。如果我们使用该属性进行附加,那么对于单个组件将非常有用。如果我错了,请帮助我。 – Krishna 2011-01-26 05:43:45