如何实现日报填写前端页面只显示含当天的前三天数据的修改删除操作按钮其他数据显示但不能修改删除后端用spring boot+jpa前端用thymeleaf
首先,在后端代码中,你需要查询出当天的前三天的数据,并将它们传递给前端页面。你可以使用JPA提供的日期查询功能来实现这一点。
例如,假设你的实体类名为DailyReport,它有一个名为reportDate的日期属性,你可以使用以下代码查询出当天的前三天的数据:
Date today = new Date();
Date threeDaysAgo = DateUtils.addDays(today, -3);
List<DailyReport> reports = dailyReportRepository.findByReportDateBetween(threeDaysAgo, today);
然后,在前端页面中,你可以使用Thymeleaf来显示这些数据,并在其中只显示当天的前三天的数据。
例如,你可以使用以下代码在表格中显示这些数据:
<table>
<thead>
<tr>
<th>Date</th>
<th>Content</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr th:each="report : ${reports}">
<td th:text="${report.reportDate}"></td>
<td th:text="${report.content}"></td>
<td>
<button th:if="${#dates.difference(report.reportDate, #dates.createNow()) <= 3}">Edit</button>
<button th:if="${#dates.difference(report.reportDate, #dates.createNow()) <= 3}">Delete</button>
</td>
</tr>
</tbody>
</table>
注意,在上面的代码中,我们使用了Thymeleaf的日期工具类来计算每个数据项的日期与当前日期之间的差距,并根据差距的大小来判断是否显示编辑和删除按钮。
最后,在后端代码中,你需要提供修改和删除数据的接口,并在这些接口中进行权限验证,以确保只有当天的前三天的数据才能被修改或删除。
例如,你可以使用以下代码来实现修改数据的接口:
@PostMapping("/reports/{id}")
public DailyReport updateReport(@PathVariable Long id, @RequestBody DailyReport report) {
DailyReport existingReport = dailyReportRepository.findById(id).orElseThrow(NotFoundException::new);
if (isEditable(existingReport)) {
existingReport.setContent(report.getContent());
return dailyReportRepository.save(existingReport);
} else {
throw new ForbiddenException();
}
}
private boolean isEditable(DailyReport report) {
Date today = new Date();
Date threeDaysAgo = DateUtils.addDays(today, -3);
return report.getReportDate().after(threeDaysAgo) && report.getReportDate().before(today);
}
在上面的代码中,我们首先查询出要修改的数据项,并检查它是否在当天的前三天内。如果是,则允许修改该数据项的内容,否则抛出一个ForbiddenException异常。
类似地,你可以使用类似的代码来实现删除数据的接口,并在这些接口中进行类似的权限验证
原文地址: https://www.cveoy.top/t/topic/eXMl 著作权归作者所有。请勿转载和采集!