0

我有一个加载BD列表的selectOneMenu,调试可以验证所有步骤都是正确的,除了它在selectOneMenu中显示值的时间。在页面上出现对象名称“JanelaPortabilidade @ 7437”,而不像字符串。

我的代码:

public List<SelectItem> listarHoraJanela(DateSelectEvent event) {  

        dataF = event.getDate();  
        Calendar dataAux = new GregorianCalendar();               
        dataAux.setTime(dataF);   


        //Corrigir  
        if (listaHoraJanela == null) {  

            listaHoraJanela = new ArrayList<JanelaEAPortabilidade>();  
            listaHoraJanela = consultaJPortabilidade.listarHoraJanela(dataAux);  
            listSelectHoraJ.add(new SelectItem("", ""));              

            for (JanelaEAPortabilidade horaJ : listaHoraJanela) {  
                String dataFormat = String.format("%02d",horaJ.horIniJanela.get(Calendar.HOUR_OF_DAY));  
                System.out.println(dataFormat);//So here is ok, print in console correct string 
                listSelectHoraJ.add(new SelectItem(horaJ.getIdtJanela(),dataFormat));  


            }  
        } 

xhtml:

<h:outputText value="Hora da Janela:" for="horaJanela" />  
<h:selectOneMenu value="#{bean.codHoraJanela}" id="horaJanela"         
    rendered="#{bean.type == 'Fixo'}" >  
<f:selectItems value="#{bean.listaHoraJanela}" />

会是什么?我肯定错过了什么。

谢谢!

4

2 回答 2

0

我很惊讶代码甚至可以工作。如果我没有错过任何东西,代码应该抛出一个NullPointerException. 在您发布的 JSFDateSelectEvent中,没有创建一个,而是在没有任何参数的情况下调用该方法。因此DateSelectEvent,Java 方法中的NULL.

您看到的输出是对象toString()方法的结果。那里表示的对象可能来自codHoraJanela托管 bean 中的方法。修复listarHoraJanela返回对象列表的方法。

于 2012-10-19T13:24:24.697 回答
0

您需要做的是使用 f:selectItems 的 itemLabel 和 itemValue 属性。这是来自 PrimeFaces 网站的示例(来自代码的 pojo 部分的 http://www.primefaces.org/showcase-labs/ui/selectOneMenu.jsf):

<f:selectItems value="#{autoCompleteBean.players}" var="player" itemLabel="#{player.name}" itemValue="#{player}"/>  

itemLabel 将显示在下拉列表中, itemValue 将返回(在您的示例中为 #{bean.codHoraJanela} )。

于 2012-10-19T15:14:08.310 回答