HI,Valuechangelistener dubbio nella JSF
prega di consultare il seguente codice:
<h:selectOneMenu id="countries" value="#{countryBean.selectedCountry}" onchange="submit()
valueChangeListener="#{countryBean.changeCountry}">
<f:selectItems value="#{countryBean.countries }" />
</h:selectOneMenu>
Backup 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"));
}
}
Per favore fatemi sapere se l'implementazione è corretta. Funziona bene. Le mie domande sono:
- Qual è il vantaggio di aggiungere il f: valueChangeListener tag all'interno del h: selectOneMenu tag. Ho usato il valore dell'attributo normaleChangeListener = "# {countryBean.changeCountry}".
- E 'necessario utilizzare onchange = "submit() questo codice per modificare i valori.
- Qual è la differenza tra la scrittura dei listener personalizzati implementando l'interfaccia ActionListener e usando solo l'attributo nei tag UIComponent (azione = "methodName"). prega di spiegare a me.
La mia opinione è che l'implementazione listener separata è utile quando stiamo inviando il modulo, ci sono più valori di componenti che sarebbero cambiati. Possiamo farlo nel metodo processValueChange. Se stiamo allegando l'attributo, ciò sarà utile per il singolo componente. Per favore aiutami se sbaglio. – Krishna