gpt4 book ai didi

java - 模型 boolean 属性值未显示在 HTML 中(Spring MVC)

转载 作者:行者123 更新时间:2023-11-30 06:53:06 25 4
gpt4 key购买 nike

Controller :

@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 。进入此页面后, Controller 将插入模型属性 requestFlag并将其设置为 true 。我可以在日志和 Debug模式下看到,模型实际上在调用请求映射时将此属性添加到模型中,即 /request/approveRequestById .

我的问题是逻辑在前端不起作用。 div 不显示。如果 requestFlag 等于 true,则它应该显示一个 div。我可以使用 <th:block th:text="@{requestFlag}">Request Flag</th:block> 打印该值但它没有给我我想要的 boolean 值。 boolean 值不能通过 Thymeleaf 渲染吗?附带模型中的其他字符串打印得很好。我是否遗漏了模板渲染顺序方面的一些基本内容?非常感谢所有帮助。

最佳答案

由于您正在使用重定向:您的模型将因重定向而丢失(将创建一个新请求),因此您必须存储redirectAttributes 中的数据。

@RequestMapping("/approveRequestById")
public String approveRequestById(Principal principal, @RequestParam(value="id") String requestId, Model model, RedirectAttributes redirectAttributes) {

//use this
redirectAttributes.addFlashAttribute("requestFlag", true);

//instead of
model.addAttribute("requestFlag", true);

return "redirect:/requests";
}

关于java - 模型 boolean 属性值未显示在 HTML 中(Spring MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42367195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com