我有一个加载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}" />
它能是什么?我一定错过了什么。
谢谢!
答案 0 :(得分:0)
我很惊讶代码甚至可以工作。如果我没有错过任何代码应该抛出NullPointerException
。在您发布的JSF中,未创建DateSelectEvent
,而是在没有任何参数的情况下调用该方法。因此,Java方法中的DateSelectEvent
应为NULL
。
您看到的输出是对象的toString()
方法的结果。可能那里表示的对象来自托管bean中的codHoraJanela
方法。修复listarHoraJanela
方法以返回对象列表。
答案 1 :(得分: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})。