На основе схемы PrimeFaces объекта DataTable фильтрации (проблемы при запуске, например)


Я пробую этот пример в примитивах. Я понимаю только первые несколько строк кода.

<p:dataTable var="car" value="#{tableBean.carsSmall}"
    emptyMessage="No cars found with given criteria">

     <f:facet name="header">
        <p:outputPanel>
            <h:outputText value="Search all fields:" />
            <p:inputText id="globalFilter" onkeyup="carsTable.filter()" style="width:150px" />
        </p:outputPanel>
    </f:facet>

Здесь может отображаться окно поиска. Развертка строк кода будет состоять в добавлении столбца и заполнении столбцов данными. Я не понимаю, что

<p:column filterBy="#{car.model}" 
    headerText="Model" footerText="contains"
    filterMatchMode="contains">
    <h:outputText value="#{car.model}" />
</p:column>`

Что такое #{car.model}? он не указывает ничего call model в классе java. Как я могу изменить свой класс java, чтобы сделать отображение столбца?

2 3

2 ответа:

Переменная выражения car объявляется атрибутом var объекта dataTable. Это означает, что каждая уникальная строка в компоненте dataTable может ссылаться на языке выражений переменной car.

Свойство model car является бобовым свойством Сериализуемого POJO Car. Предполагается, что класс автомобилей имеет свойство model, означающее геттер getModel() и сеттер setModel().

Атрибут filterBy <p:column> указывает, что этот заголовок столбца будет иметь свой собственный уникальный фильтр текстового поля и что он будет фильтровать строки по свойству car.model.

Атрибут filterMatchMode указывает, что критерием соответствия является contains, что означает, что любое текстовое появление того, что введено в поле фильтра столбца, будет приравниваться как совпадающая запись. Посмотреть на основе схемы PrimeFaces руководство для полный список параметров filterMatchMode.

private List<Car> carsSmall;

CarsSmall-это список, который содержит Car объекты. Car импортируется сюда:

import org.primefaces.examples.domain.Car; 

Автомобиль.java Source

Автомобиль является бэк-Бобом, он имеет атрибут model, который содержит модель автомобиля в виде String.

В машине #{car.model} определяется здесь:

<p:dataTable var="car"...>

DataTable перебирает каждый элемент в списке carsSmall, и вы можете получить доступ к текущему элементу, используя имя, указанное в атрибуте var (здесь: car). Так #{car.model} называет getModel() метод текущего объекта Car.