Controller:модели Логическое значение атрибута не отображается в HTML (Spring MVC)
@RequestMapping("/approveRequestById")
public String approveRequestById(Principal principal, @RequestParam(value="id") String requestId, Model model) {
Users manager = usersRepository.findOneByInitialName(principal.getName());
RequestDO request = requestRepository.findOne(Long.parseLong(requestId));
requestRepository.updateRequestStatusByRequestId(RequestStatus.APPROVED, request.getId());
Users employee = usersRepository.findOne(request.getUsers().getId());
// Instead of getting the same RequestDO object from DB, I just updated it's status for using in mail correctly.
request.setStatus(RequestStatus.APPROVED);
model.addAttribute("requestFlag", true);
log.info("Model: " + String.valueOf(model));
/***
Send Notification Mail to Employee
***/
mailUtil.sendNotificationEmailWithTemplating(employee, manager, request);
return "redirect:/requests";
}
HTML:
<th:block th:switch="${requestFlag}">
<th:block th:case="true">
<div style="width: 100%; height: 30px; color: #fff; background: #C00000; text-align: center; padding: 10px;"><span
style="font-weight: bold; padding-bottom: 10px; ">The request from your mailbox has been approved!</span></div><br>
</th:block>
</th:block>
выход Войти при посадке на странице после электронной ссылке:
Model: {currentRole=EMPLOYEE, numRequests=0, requestFlag=true}
Пользователь обращается к странице с чернилами электронной почты, то есть http://localhost:8181/request/approveRequestById?id=2
. Как только на этой странице контроллер вставляет атрибут модели requestFlag
и устанавливает его на true
. В режиме журнала и отладки я могу видеть, что модель действительно добавляет этот атрибут к модели при вызове отображения запроса, то есть /request/approveRequestById
.
Моя проблема заключается в том, что логика не работает на интерфейсе. Div не отображается. Если есть requestFlag, равный true, он должен показывать div. Я могу напечатать значение с помощью <th:block th:text="@{requestFlag}">Request Flag</th:block>
, но это не дает мне логическое значение, которое я хочу. Может ли Booleans не отображаться через Тимелеаф? Остальные строки в прилагаемой модели печатаются очень хорошо. Я пропустил что-то фундаментальное с точки зрения порядка обработки шаблонов? Вся помощь очень ценится.
Попробуйте использовать 'RedirectAttributes' вместо' Model'. – SachinSarawgi
Объем модели не относится к модели. Вы можете сравнить это будет httprequest.forward VS httprequest.sendRedirect в сервлет. – Nimesh