Ciao,
ho un problema, sto cercando di utilizare un valuechangelistener su una lista di valori (banalmente true e false) ma non funziona se cambio il valore ricarica la pagina senza cambiare la seconda lista. Lo stesso codice utilizzato pero' con una checkbox funziona normalmente.
Il comportamento è il seguente: se la checkbox e selezionata (oppure come in questo caso la listbox e su true) camba i valori contenuti nella seconda lista.
Dov'e' che sbaglio?
codice:file .jsf <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <html> <head><title>jsf 2</title></head> <body> <f:view> <h:form id="form2"> <h:selectOneMenu valueChangeListener="#{ResumeBean.changeColorMode}" onclick="submit()" immediate="true" validator="#{ResumeBean.isUsingColorNames}"> <f:selectItem itemLabel="Colore esadecimale" itemValue="false" itemDescription="Visualizza i colori in formato esadecimale"/> <f:selectItem itemLabel="Colore Letterale" itemValue="true" itemDescription="Visualizza i colori in formato uamno"/> </h:selectOneMenu> <h:selectOneMenu> <f:selectItems value="#{ResumeBean.availableColors}"/> </h:selectOneMenu> </h:form> </f:view> </body> </html>Dove sta l'errore?codice:Bean package ctrl; import javax.faces.event.ValueChangeEvent; import javax.faces.model.SelectItem; public class ResumeBean { private SelectItem[] availableColorNames = {new SelectItem("BLACK"), new SelectItem("WHITE"), new SelectItem("SILVER"), new SelectItem("RED"), new SelectItem("GREEN"), new SelectItem("BLUE")}; private SelectItem[] availableColorValues = {new SelectItem("#000000"), new SelectItem("#FFFFFF"), new SelectItem("#C0C0C0"), new SelectItem("#FF0000"), new SelectItem("#00FF00"), new SelectItem("#0000FF")}; private boolean isUsingColorNames = true; public SelectItem[] getAvailableColors() { if (isUsingColorNames) { return (availableColorNames); } else { return (availableColorValues); } } public SelectItem[] getAvailableColorNames() { return availableColorNames; } public void setAvailableColorNames(SelectItem[] availableColorNames) { this.availableColorNames = availableColorNames; } public SelectItem[] getAvailableColorValues() { return availableColorValues; } public void setAvailableColorValues(SelectItem[] availableColorValues) { this.availableColorValues = availableColorValues; } public boolean isUsingColorNames() { return isUsingColorNames; } public void setUsingColorNames(boolean usingColorNames) { isUsingColorNames = usingColorNames; } public void changeColorMode(ValueChangeEvent event) { boolean flag = Boolean.getBoolean((String) event.getNewValue()); setUsingColorNames(!flag); } }
![]()
grazie

Rispondi quotando