Как отфильтровать таблицу в jsp

121
17 июля 2021, 16:40

Пытаюсь настроить фильтр на jsp странице для таблицы. Нашел вот такой вариант: https://daruse.ru/prostaya-filtracziya-tabliczyi-na-jquery Но моя таблица заполняется через jstl

 <c:forEach var="employee" items="${employees}">
    <tr>
        <td>${employee.lastName}</td>
        <td>${employee.firstName}</td>
       ....
</c:forEach>

и я не могу добавить <tr class="table data" к фильтруемым элементам. Может я вообще неправильно всё делаю, подскажите, каким способом лучше сделать фильтр в моем случае. С js у меня совсем туго. Вот на всякий случай полная таблица`

<style type="text/css">
    TABLE {
        border-collapse: collapse;
    }
    TD, TH {
        padding: 3px;
        border: 1px solid black;
    }
    TH {
        background: #b0e0e6;
    }
</style>
<tr>
    <th>Фамилия</th>
    <th>Имя</th>
    <th>Отдел</th>
    <th>Должность</th>
    <th>Дата приема</th>
    <th>Окончание адаптации</th>
    <th>Статус</th>
    <th>Беседы</th>
    <th></th>
    <th></th>
</tr>
<tr class='table-filters'>
    <td>
        <input type="text"/>
    </td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
</tr>
<tr class="table data">
<c:forEach var="employee" items="${employees}">
    <tr>
        <td>${employee.lastName}</td>
        <td>${employee.firstName}</td>
        <td>${employee.department.name}</td>
        <td>${employee.position}</td>
        <td>${employee.employmentDate}</td>
        <td>${employee.endOfAdaptation}</td>
        <td>${employee.status}</td>
        <td>${fn:length(employee.interviews.toArray())}</td>
        <td><input type="button"  onclick="location.href='employees/${employee.id}/edit'" value="Редактировать"></td>
        <td><input type="button"  onclick="location.href='employees/${employee.id}'" value="Открыть"></td>
    </tr>
</c:forEach>
</tr>

`

Answer 1

Jsp позволяет встраивать куски кода java при помощи тега <%%>. Так что в вашем случае можно воспользоваться обычным if.


<c:forEach var="employee" items="${employees}">
<%if (request.getAttribute("employee").getFirstName() != null) {%>
    <tr>
        <td>${employee.lastName}</td>
        <td>${employee.firstName}</td>
    </tr>
<%}%>
</c:forEach>

Не забывайте закрывать if (<%}%>)

Второй вариант - использовать jstl c:if тег

READ ALSO
Как ускорить приложение на vue?

Как ускорить приложение на vue?

Прочитал много топиков на эту тему, но они все довольно устаревшие, неприменимые к vue-cli

278
Трансформировать массив в объект

Трансформировать массив в объект

Необходимо преобразовать массив в объект

142
Вызвать html проверку поля js

Вызвать html проверку поля js

Подскажите пожалуйста, можно ли как то вызвать проверку поля на заполненность required (пример ниже) с помощью js для отправки ajax запроса без <form>

199