Фильтр DataTable в Primefaces работает только один раз

Я пытаюсь отфильтровать dataTable с помощью Primefaces, как в этот пример. (В веб-браузере) Я набираю текст, по которому хочу отфильтровать, он работает один раз, но когда я удаляю текст, который я написал, результат остается прежним, когда он должен вернуться в исходное состояние.

Так что это работает один раз, а затем не будет реагировать. (Я могу удалить или перепечатать текст фильтра, который я написал, но это больше не влияет на таблицу)

Извините за странные имена атрибутов в коде, потерпите меня. :)

xhtml-страница:

<h:form>
    <p:dataTable var="aggr" value="#{aggregationManagedBean.logiskAdressatModel}"
             widgetVar="aggrTable"
             emptyMessage="No aggr found with given criteria">

        <f:facet name="header">
            <p:outputPanel>
                <h:outputText value="Filter:" />
                <p:inputText id="globalFilter" onkeyup="aggrTable.filter()" />
            </p:outputPanel>
        </f:facet>
        <p:column filterBy="#{aggr.name}"> 
            <f:facet name="header">
                <h:outputText value="Name" /> 
            </f:facet>
            <h:outputText value="#{aggr.name}" /> 
        </p:column>
    </p:dataTable>
</h:form>

поддерживающая фасоль:

@ManagedBean
@SessionScoped
public class AggregationManagedBean {

    private List<LogiskAdressat> logiskaAdressater;
    private DataModel<LogiskAdressat> logiskAdressatModel;

    public AggregationManagedBean() {
        logiskaAdressater = getLogiskaAdressater();
        logiskAdressatModel = new ListDataModel<LogiskAdressat>(logiskaAdressater);
    }

    private static List<LogiskAdressat> getLogiskaAdressater(){
        List<LogiskAdressat> logiskaAdressater = new ArrayList<LogiskAdressat>();

        logiskaAdressater.add(new LogiskAdressat("01 addr_id 01", "Joe"));
        logiskaAdressater.add(new LogiskAdressat("02 addr_id 02", "John"));        
        logiskaAdressater.add(new LogiskAdressat("03 addr_id 03", "Jake"));

        return logiskaAdressater;
    }

    public DataModel<LogiskAdressat> getLogiskAdressatModel() {
        return logiskAdressatModel;
    }

    public void setLogiskAdressatModel(DataModel<LogiskAdressat> adressatModel) {
        this.setLogiskAdressatModel(adressatModel);
    }

}


person Dennis S    schedule 21.10.2011    source источник


Ответы (1)


Является ли LogiskAdressat сериализуемым?

Если нет, попробуйте сделать его Serializable -

public class LogiskAdressat implements Serializable {

    //....
person Bhesh Gurung    schedule 21.10.2011
comment
Спасибо за предложение. Я оставил компьютер на работе, так что мне придется вернуться в понедельник, глупый я. - person Dennis S; 21.10.2011
comment
Вау, я не думал, что это проблема. Это сработало, большое спасибо! - person Dennis S; 24.10.2011