Фильтрация rich: dataTable с использованием rich: calendar по столбцу - PullRequest
1 голос
/ 06 октября 2011

Я использую richfaces 4.0 и добавляю несколько фильтров столбцов для rich: dataTable. Теперь, так как я фильтрую столбец, содержащий дату, я хотел бы использовать rich: calendar для фильтрации содержимого таблицы. Итак, следуя найденным примерам, я добавил следующий код на страницу .xhtml:

<rich:column filter="#{rerunFilter.aodFilterImpl}">
    <f:facet name="header">
        <h:outputText value="Aod Rerun" />
        <br/>
        <rich:calendar id="aod"
                   datePattern="yyyy-MM-dd"
                   showWeekDaysBar="false"
                   showFooter="false"
                   value="#{rerunFilter.aodFilter}"
                   popup="true">
            <a4j:ajax event="change" render="main:rerunListTable" execute="@this"/>
        </rich:calendar>
    </f:facet>
    <h:outputText value="#{item.aod}">
        <f:convertDateTime pattern="yyyy-MM-dd" />
    </h:outputText>
</rich:column>

На стороне сервера у меня есть класс фильтра, в который я добавил следующий код:

private String aodFilter;

public String getAodFilter() {
    return aodFilter;
}

public void setAodFilter(String aodFilter) {
    logger.info("Received "+aodFilter);
    this.aodFilter = aodFilter;
}

public Filter<?> getAodFilterImpl() {
    return new Filter<Rerun>() {
        public boolean accept(Rerun item) {
            String aod = getAodFilter();
            logger.info("Invoked with "+aod+" Item date "+item.getAod());
            return true;

        }
    };
}

Когда я менял дату, используя календарь, я видел в журнале свойство правильно, но что-то не так, так как в конце я получил исключение

11: 50: 54 484 GRAVE [org.richfaces.log.Context] (http - 127.0.0.1-8080-1) main: rerunListTable: j_idt38: «Ср. 12 октября 00:00:00 CEST 2011» не удалось следует понимать как дату: javax.faces.convert.ConverterException: main: rerunListTable: j_idt38: «Ср 12 октября 00:00:00 CEST 2011» не может быть понят как дата.

Где я не прав? Спасибо фил

1 Ответ

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

Я нашел проблему!Я использовал неправильный тип для свойства aodFilter, это java.util.Date, раньше я использовал String.Используя правильный тип и добавляя логику фильтра, все работает.Просто примечание, я должен решить еще одну небольшую проблему, поскольку я не узнал, что JSF конвертировал дату без использования своего часового пояса.Кстати, я добавил эти строки

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

в файл web.xml, как предложено здесь f: convertDateTime отображает неверную дату , и все было в порядке, спасибо

...