HI,Valuechangelistener duda en JSF
Por favor ver el siguiente código:
<h:selectOneMenu id="countries" value="#{countryBean.selectedCountry}" onchange="submit()
valueChangeListener="#{countryBean.changeCountry}">
<f:selectItems value="#{countryBean.countries }" />
</h:selectOneMenu>
Copia de frijol
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"));
}
}
Por favor, hágamelo saber si la implementación es correcta. Está funcionando bien. Mis preguntas son:
- ¿Cuál es la ventaja de la adición de la f: valueChangeListener etiqueta dentro de la h: selectOneMenu etiqueta. He usado el atributo normal valueChangeListener = "# {countryBean.changeCountry}".
- ¿Es necesario utilizar onchange = "submit() este código para cambiar los valores.
- ¿Cuál es la diferencia entre escribir los oyentes personalizados mediante la implementación de la interfaz ActionListener y sólo usar el atributo en las etiquetas UIComponent (acción = "methodName"). Por favor explique mí.
Mi opinión es que la implementación del oyente por separado es útil cuando enviamos el formulario, existen múltiples componentes que los valores habrían cambiado. Podemos hacer eso en el método processValueChange. Si estamos adjuntando con el atributo, eso será útil para el componente individual. Por favor, ayúdame si estoy equivocado. – Krishna