如何在Thymeleaf下拉框中展示控制器传入ID对应的客户?
实现Thymeleaf下拉框仅展示指定客户
看起来你需要把原本展示全部客户的下拉框,改成只显示当前登录用户关联的指定客户对吧?我来一步步帮你搞定:
第一步:完善控制器逻辑,获取筛选后的客户列表
首先得在你的addRoute方法里,补全从SecurityContext获取当前用户后,查询对应客户的逻辑。假设你的业务是“当前登录用户仅能查看自己关联的客户”,你可以这样调整控制器代码:
@GetMapping("/add") public String addRoute(Model model) { model.addAttribute("route", new RouteCommand()); // 获取当前登录的用户信息 User currentUser = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); // 根据用户关联关系,查询他有权限查看的客户列表(这里替换成你的实际业务逻辑,比如从数据库查询) // 示例:假设你有CustomerService提供查询方法,传入用户关联的客户ID集合 List<Customer> authorizedCustomers = customerService.getCustomersByUserId(currentUser.getId()); // 将筛选后的客户列表传入前端模型 model.addAttribute("authorizedCustomers", authorizedCustomers); return "your-add-view-name"; // 替换成你的实际视图文件名 }
第二步:修改Thymeleaf下拉框代码
把原来遍历全部客户的逻辑,改成遍历我们刚传入的筛选后列表即可:
<select th:field="*{customer}"> <option th:each="customer : ${authorizedCustomers}" th:value="${customer.id}" th:text="${customer.name}"></option> </select>
这样调整后,下拉框就只会展示当前登录用户对应的客户了。如果你的业务关联规则不同(比如用户属于某个客户组、有特定权限标签),只需要修改控制器里查询authorizedCustomers的逻辑就行。
内容的提问来源于stack exchange,提问作者UnexpectedCharacter
相关产品推荐
相关产品推荐

