#javascript #java #jquery #spring-mvc #thymeleaf
#javascript #java #jquery #spring-mvc #thymeleaf
Вопрос:
Я не могу понять одну вещь.
Мой случай: у меня есть VacationRequests как объект в серверной части (BE).
@Data
public class Request {
@Id
private String id;
private LocalDateTime requestedAt;
private LocalDateTime decisionDate;
private RequestType type;
private RequestStatus status;
private String userId;
private String userFirstName;
private String userLastName;
private LocalDate from;
private LocalDate to;
}
Я отправляю его во внешний интерфейс (FE) и показываю все запросы на отпуск в таблице (данные из каждого запроса из myActiveRequests
списка). Пользователь может обновить запрос на отпуск, если это необходимо.
Код:
<tbody>
<tr th:each="request,iter: ${myActiveRequests}">
<td th:text="${iter.count}" />
<td th:text="${request.getType()}" />
<td>
From:<span th:text="${#temporals.format(request.from, 'dd-MM-yyyy')}"/>
to: <span th:text="${request.to}"/>
</td>
<td th:text="${#temporals.format(request.requestedAt, 'dd-MM-yyyy')}" />
<td th:text="${request.status.PLANNED.toString()}"/>
<td><button th:value="${request.id}" data-toggle="modal" data-target="#vacationModal" onclick="updateVacation()">Edit</button></td>
</tr>
</tbody>
В третьем <td>
у меня есть данные об отпуске от и до. Как вы видите, у меня есть EDIT
кнопка. Поэтому, если пользователь решил изменить свой запрос, я хочу, чтобы он видел всплывающее окно с предопределенными «от» и «до» с третьего <td>
.
Я создал функцию updateVacation
, которая вызывается после нажатия на Edit
кнопку, но я не понимаю, как отправить в эту функцию запрос id
(да, у него есть это свойство) from
и to
значение.
в этом случае у меня будет возможность создать ajax post-вызов для BE и обновить существующий запрос на отпуск по идентификатору.
Я думал поместить атрибут id в html, но было бы 1-2-3-10 запросов, поэтому id не имеет значения.
Я парень, а не FE, так что извините, если это слишком странные вопросы. Просто ткни меня носом в это, и я буду счастлив.
Комментарии:
1. Я не фанат встроенного кода, но быстрое решение этой проблемы — сделать
onclick="updateVacation(this)"
и использоватьfunction updateVacation(btn) { ... }
. Теперь вы можете прочитатьbtn.value
, чтобы получить идентификатор.2. Я думал об этом. Но updateVacation (this) просто пришлите мне <td> с помощью кнопки, я не могу получить значение
from
иto
значение третьегоtd
. и у меня нет идентификатора запроса, поэтому я не могу этого сделать.3. Вы можете использовать
const rowCells = btn.closest('tr').querySelectorAll('td');
для получения списка<td>
s в той же строке, что и кнопка. Однако этот подход использует элементы DOM для хранения данных, что не является хорошей практикой. Я бы заполнил всплывающее окно, используяfetch
и идентификатор для загрузки данных с сервера.