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>
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);


    }
}
Dove sta l'errore?


grazie