Ted jenom hadam mozne priciny chyby:
1/ v prvnim selectOneMenu mate jako onchange JavaScript submit();, tj. vyvola se HTTP request, ale chybi nektery parametr, ktery si JSF interne predava (selectOneMenu je komponenta UISelectOne, a ta neimplementuje ActionSource, commandButton je UICommand, ktery ActionSource implementuje, takze tady je to "zarizeno interne"), diky tomu nemuze korektne probehnout cely zivotni cyklus. 2/ Nebylo v zjednoduseni opominuto ze SelectItem obsahuje i jine hodnoty nez stringy? Nemohou se tam dostat odnekud napriklad datumy, atd.? (vlastni neblaha zkusenost :-)) 3/ Vas priklad je dozajista zjednoduseny, ale u druheho selectOneMenu vam chybi atribut value, tj. jak zjistujete vybranou hodnotu? 4/ Zkuste vypisovat chybova hlaseni pro kazdy prvek pomoci <h:message for="select2" />, nekdy to pomuze lokalizovat zdroj chyby lepe.

Neslo by to cele vyresit elegantneji pomoci jednoho selectOneMenu, ktere by obsahovalo SelectItemGroup ("ovoce", "zelenina", "napoje"), a kazda tato SelectItemGroup by pak mela jednotlive polozky ("pivo", "limo", "kava")?

                  Mirek



Holoubek, Vaclav (EOT) napsal(a):
Dobry den,
Snažím se pomoci JSF naplnit vice listboxu, které se budou vzajemne ovlivnovat. 
Delam to na Websphere 6.0.
Nechova se mi to ale korektne a při zmene prvniho listboxu to hlasi tuto chybu 
(ale ne vzdy) :
        00000050 jsf   E com.sun.faces.context.FacesContextImpl addMessage 
Adding Message[sourceId=_id0:select2,summary=Validation Error: Value is not 
valid)

Nevite co delam spatne ????

zde je ukazka
JSF stranka:
<f:view>
        <BODY><h:form>
<h:selectOneMenu id="select1" onchange="submit()" value="#{managedBean.druh}">
                <f:selectItems value="#{managedBean.seznamDruhu}"/>
        </h:selectOneMenu>
        <BR>
        -------------------------------------
        <BR>
        <h:selectOneMenu id="select2">
                <f:selectItems value="#{managedBean.seznamZbozi}"/>
        </h:selectOneMenu>
        <BR>
        <BR>
<h:commandButton type="submit" value="Submit" action="#{managedBean.vystup}">
        </h:commandButton>
        </h:form>
        </BODY>
</f:view>

ManagedBean:
public class ManagedBean

{
        private String aktDruh = "";
private SelectItem[] druhy =
    { new SelectItem("Napoje"),
      new SelectItem("Ovoce"),
      new SelectItem("Zelenina")};
        
        private SelectItem[] napoje =
    { new SelectItem("Limo"),
      new SelectItem("Pivo"),
      new SelectItem("Kava")};
        private SelectItem[] ovoce =
    { new SelectItem("Jablko"),
      new SelectItem("Hruska"),
      new SelectItem("Svestka")};
        private SelectItem[] zelenina =
    { new SelectItem("Mrkev"),
      new SelectItem("Celer"),
      new SelectItem("Petrzel")};
        
        public SelectItem[] getSeznamDruhu() {
return(druhy); }
        public SelectItem[] getSeznamZbozi() {
                if(aktDruh.equals("Napoje"))
                        return(napoje);
                if(aktDruh.equals("Ovoce"))
                        return(ovoce);
                if(aktDruh.equals("Zelenina"))
                        return(zelenina);
                else return(zelenina);
        }
        
        public String getDruh() { return(aktDruh); }

        public void setDruh(String zbozi) {
           this.aktDruh = zbozi;
        }
        
        public String vystup() {
              return("vystup");
        }
}



Odpovedet emailem