h: дата не заселена - PullRequest
       3

h: дата не заселена

1 голос
/ 11 октября 2011

Это связанная (и / или последующая) проблема с:

Функция события, вызываемая перед сеттером

Итак, у меня есть:

<Td>
<h:selectOneMenu id="combocarList" 
value="#{customerBean.selectedcar}"
styleClass="comboStyle"
valueChangeListener="#{customerBean.loadothercombos}"
onchange="document.forms[0].submit()"
>
<f:selectItem
    itemLabel="-----------Select--------------"
    itemValue="None" />
<f:selectItems value="#{customerBean.carsList}" />
</h:selectOneMenu>
</Td>

событие вызывается, когда пользователь выбирает элемент из выпадающего списка, и бэк выполняет обработку для получения значений другого выпадающего списка, который работает нормально, НО у меня также есть ah: datatable, что является проблемой.Значения не будут отображаться.

таблица данных определяется как:

<h:dataTable
    id="calDetails" rowClasses="oddrow,evenrow"
    headerClass="thHeading" var="car"
    value="#{cardetails.allinfo}">
    <h:column>
        <f:facet name="header">
            <h:outputText id="lblCode" value="Code"></h:outputText>
        </f:facet>
        <h:inputHidden value="#{car.code}"></h:inputHidden>
        <h:outputText id="carcodeid"
            value="#{car.code}"></h:outputText>
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText id="lblCode" value="Sold"></h:outputText>
        </f:facet>
        <h:inputHidden value="#{car.sales}"></h:inputHidden>
        <h:outputText id="carsalesid"
            value="#{car.sales}"></h:outputText>
    </h:column>
</h:dataTable>

У меня есть сеттер и геттеры для cardetails.allinfo, и я знаю, когда document.forms[0].submit() называется cardetails.allinfoне null, поскольку, поскольку я проверял это, используя

 <h:outputText value="#{cardetails.allinfo eq null}" />

, который возвратил false.Я часами снималась в этом и не вижу своей ошибки.был бы признателен за любой вклад.Спасибо

1 Ответ

2 голосов
/ 11 октября 2011

Видимо список просто пуст. Лучшая отладка -

<h:outputText value="#{not empty cardetails.allinfo}" />

Это покажет true всякий раз, когда allinfo не является null и не пустым. Вы также можете сделать

<h:outputText value="#{cardetails.allinfo}" />

для просмотра всех элементов списка в виде обычного текста, представленного ArrayList#toString(). Если вы видите [], тогда это действительно пусто. В противном случае, если вы видите [com.example.Car@1234,com.example.Car@5678], то у него есть 2 Car элементов (при условии, что вы не переопределили его метод toString() для возврата более читабельного представления String, как это делают многие начинающие;)).

В случае пустого списка вам нужно будет отладить и исправить логику загрузки списка из БД.

...