0

have a little problem with taking data from selectonemenu. In my view i have three selectonemenu, one for each data table( Korisnik, Odsek, Predmet ) and on submit button it should insert selected values to the fourth table (Drzi). Values are populated from list for each selectonemenu.

View:

<h:body>
    <center>
        <h:form>
            poz!
            <p:growl id="msgs" showDetail="true"/>
            <h:panelGrid columns="2" cellpadding="5" border="2" bgcolor="lightgray">
                <h:outputText value="Predmet"/>
                <p:selectOneMenu style="width: 100%" value="#{dodela.akrPred}">
                    <f:selectItem itemLabel="Izaberite predmet" itemValue=""/>
                    <f:selectItems value="#{pred.akrList}" var="predmet" itemValue="#{dodela.akrPred}" itemLabel="#{predmet.akronim}"/>
                </p:selectOneMenu>
                <h:outputText value="Profesor"/>
                <p:selectOneMenu value="#{dodela.imeProf}">
                    <f:selectItem itemLabel="Izaberite profesora" itemValue=""/>
                    <f:selectItems value="#{kor.korList}" var="koris" itemValue="#{dodela.imeProf}" itemLabel="#{koris.imeprez}"/>
                </p:selectOneMenu>
                <h:outputText value="Odsek"/>
                <p:selectOneMenu style="width: 100%" value="#{dodela.akrOdsek}">
                    <f:selectItem itemLabel="Izaberite odsek" itemValue=""/>
                    <f:selectItems value="#{odsk.odList}" var="ods" itemValue="#{dodela.akrOdsek}" itemLabel="#{ods.akronim}"/>
                </p:selectOneMenu>
                <p:commandButton value="Potvrdi" action="#{dodela.dodela()}" update="msgs"/>
            </h:panelGrid>
        </h:form>
    </center>          
</h:body>

and function in Model:

    public String dodela(){
    FacesContext context = FacesContext.getCurrentInstance();
    System.out.println("Profesor je " + imeProf);
    System.out.println("Predmet je" + akrPred);
    System.out.println("Odsek je" + akrOdsek);
    Drzi d = Drzi.getDrzi( imeProf, akrPred, akrOdsek);
    if(d != null){
        msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "Profesor vec drzi taj predmet na tom odseku.");
        context.addMessage(null, msg);
        return null;
    }
    Drzi.dodaj(imeProf, akrPred, akrOdsek);
    msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Uspesno ste dodelili predmet profesoru.");
    context.addMessage(null, msg);
    return "";
}

the problem is that im getting: dataBeans.Korisnik@9000651, dataBeans.Predmet@c3648626, dataBeans.Odsek@18308e for selected values. The bean is RequestScoped. Using MVC approach, Primefaces 5.0, JSF 2.2.

UPDATE

I was missing Override toString() for my Controlor class's, now it's working

DarkTemplar
  • 31
  • 11

2 Answers2

0

You need to create @FacesConverter because when you have selectMenu and bound your own class to it to choose from, the returned value is just String created from toString() of chosen element.

You can look at the example in the last tab ThemeConverter.java

http://www.primefaces.org/showcase/ui/input/oneMenu.xhtml

Geinmachi
  • 1,251
  • 1
  • 8
  • 20
  • I already try that and getting java.lang.ClassCastException: java.lang.String cannot be cast to dataBeans.Korisnik, but thx to @ACV i manage to solve problem. I was missing toString() – DarkTemplar Sep 10 '15 at 21:44
0

You can try using omnifaces Converter, and check my solution : solution SelectOneMenu

John Lopez
  • 127
  • 1
  • 9