2015-09-10 3 views
0

есть небольшая проблема с получением данных от selectonemenu. На мой взгляд, у меня есть три selectonemenu, по одному для каждой таблицы данных (Korisnik, Odsek, Predmet), а на кнопке отправки она должна вставить выбранные значения в четвертую таблицу (Drzi). Значения заполняются из списка для каждого selectonemenu.получение Someclass @ c3648626 значение от p: selectonemenu

Вид:

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

и функции в модели:

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 ""; 
} 

проблема в том, что им получать: [email protected], [email protected], dataBeans.Odsek @ 18308e для выбранных значений. Компонент RequestScoped. Использование подхода MVC, Primefaces 5.0, JSF 2.2.

UPDATE

я пропускал Override ToString() для моего Controlor класса, теперь он работает

+1

ли ваши классы 'ToString()' перекрываться ? – ACV

+0

Я рекомендую вам использовать атрибут 'noSelectionOption' из тега' f: selectItem' вместо того, чтобы указывать пустое значение. –

+0

@ACV нет они не – DarkTemplar

ответ

0

Вам нужно создать @FacesConverter, потому что, когда вы selectMenu и связала свой собственный класс, чтобы его выбрать, то возвращаемое значение равно String, созданное с toString() выбранного элемента.

Вы можете посмотреть на пример в последней вкладке ThemeConverter.java

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

+0

Я уже пытаюсь это и получаю java.lang.ClassCastException: java.lang.String не может быть передан в dataBeans .Korisnik, но thx to @ACV мне удается решить проблему. Мне не хватало toString() – DarkTemplar

Смежные вопросы