Auf Thema antworten

Die Lösung mit dem Tabs ist nicht gerade optimal weil die subPanel's nicht das immediate Attribute besitzen d.h. kannst du wegen den required Eingabefeldern nicht navigieren bzw. es erscheint eine Fehlermeldung.


Einfachste Lösung wäre required auf false zu setzen und die Validierung in der jeweiligen action-methode zu verlagern. Die Fehlermeldung kannst du an die auslösende Komponente hängen (actionlistener) oder über die jeweiligen client id's - bsp.


[code=Java]

<h:body>

  <h:form id="myForm">

    <o:tabbedPane loadingMode="client">

        <o:subPanel caption="tab1">

                <h:panelGrid id="grid1" columns="2">

                    <h:outputLabel for="name" value="Name:" />

                    <h:inputText value="#{Bean.name}" id="name" required="true" />

                                        <h:message for="name"/>


                                         <h:outputLabel for="login" value=""/>

                    <h:commandButton id="login" value="einloggen" action="#{Bean.einloggen}" />

                    <h:message for="login"/>

                </h:panelGrid>

        </o:subPanel>

        <o:subPanel caption="tab2">

            ...

        </o:subPanel>

    </o:tabbedPane>

 </h:form>

</h:body>

[/code]


[code=Java]

public class Bean {

private String name;


public String einloggen(){

if(name == null) FacesContext.getCurrentInstance().addMessage("myForm:name", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Eingabe erforderlich", null));

}


try{


}catch(...){

FacesContext.getCurrentInstance().addMessage("myForm:login", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Fehlerhafter login.", null));

return "";

}

return "login";

}

[/code]



Oben