【发布时间】:2017-02-14 03:58:06
【问题描述】:
我设置了以下 ControllerAdvice 来检查在任何给定时间属于某个用户的“请求”对象的当前数量。
@ControllerAdvice
public class ApplicationAdvice {
private static final Logger log = LoggerFactory.getLogger(ApplicationAdvice.class);
@Autowired
UsersRepository usersRepository;
@Autowired
RequestRepository requestRepository;
@ModelAttribute("numRequests")
public int numRequests(Principal principal, Model model) {
Users user = usersRepository.findOneByInitialName(principal.getName());
if (user != null) {
log.info(user.getId().toString());
// TODO Find all APPROVED requests if user is EMPLOYEE and all PENDING requests is user is MANAGER
// TODO Reset to 0 once we hit /requests page
// TODO Update this value on page refresh if not on /requests page
for (RequestDO requestDO : requestRepository.findByUsersAndStatus(user, RequestStatus.PENDING)) {
ArrayList<RequestDO> requestsList = new ArrayList<>();
requestsList.add(requestDO);
int numRequests = requestsList.size();
log.info(String.valueOf(numRequests));
model.addAttribute("numRequests", numRequests);
return numRequests;
}
}
return 0;
}
}
我将属性“numRequests”传递给索引模板中的片段“header”:
<body>
<div class="container" style="width: 100% !important;">
<div th:replace="fragments/header :: header"></div>
<div th:replace="fragments/null :: null"></div>
<div th:replace="fragments/footer :: footer"></div>
</div>
</body>
在 header.html 片段中,我有一个简短的if statement,它显示了这个属性的值:
<th:block th:if="${numRequests} != '0'">
<div style="float: left; margin-right: 10px;">My Requests</div>
<div style="overflow: hidden" class="circle">
<th:block th:text="${numRequests}"></th:block>
</div>
</th:block>
所以这一切都很好。如果数据库中有 0 个请求对象,则不显示任何内容。但是,如果超过 0 个,则会出现一个圆形通知标记并正确显示数字 1。问题是无论创建多少请求对象,我仍然总是看到数字 1。我确定我' m 正确查询它们。就逻辑而言,我在这里遗漏了一些基本的东西吗?也许属性值由于某种原因只更新一次?
【问题讨论】:
标签: java html spring spring-boot