SpringBoot中通过用户名查询Admin数据渲染页面跳错误页问题
问题描述
尝试通过管理员用户名从数据库获取管理员详情,但始终被重定向到错误页。预期是当URL中包含数据库已有的管理员用户名时,Thymeleaf模板能渲染出对应数据,但实际未实现。
相关代码
管理员控制器
@GetMapping("/admin-portal/{username}") public String adminPortal(@PathVariable("username") String username, Model model){ Optional<Admin> admin = Optional.ofNullable(adminservice.getAdminByUsername(username)); if (admin.isPresent()){ model.addAttribute("admin", admin.get()); return "admin/admin-portal"; } return "error"; }
管理员仓库
public interface AdminRepository extends JpaRepository<Admin, Long>{ Admin findByUsername(String username); }
管理员实体类
@Data @Entity(name = "Admin") @Table public class Admin { @Id @SequenceGenerator( name = "admin_sequence", sequenceName = "admin_sequence", allocationSize = 1 ) @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "admin_sequence" ) private long id; private String username; private String password; private String role; public Admin() { } public Admin(long id, String username, String password, String role) { this.id = id; this.username = username; this.password = password; this.role = role; } // Constructor without Id public Admin(String username, String password, String role) { this.username = username; this.password = password; this.role = role; } }
管理员服务类
public Admin getAdminByUsername(String username){ return adminRepository.findByUsername(username); }
Thymeleaf模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Admin Portal Page</title> </head> <body> <div class="container"> <tr> <td>Username:</td> <td th:text="${admin.username}"></td> <td>Password:</td> <td th:text="${admin.password}"></td> </tr> </div> </body> </html>
排查与解决建议
- 确认数据库中存在目标用户名的管理员记录,注意大小写匹配:部分数据库(如PostgreSQL)默认区分大小写,若数据库中用户名是
AdminUser,URL传入adminuser会查询不到 - 调试查询逻辑:在
getAdminByUsername方法中添加日志,输出传入的username和查询结果,确认是否返回null - 检查JPA方法映射:若实体类的
username字段使用了@Column指定数据库列名,确保方法名findByUsername对应实体类的字段名(而非数据库列名) - 验证URL参数:确认URL中的用户名参数没有编码问题或多余字符,比如空格、特殊字符未转义
- 修复模板HTML结构:
<tr>标签必须包裹在<table>内,否则浏览器渲染会异常(虽然不影响重定向,但会导致数据无法正常显示)
内容的提问来源于stack exchange,提问作者hybridize
相关产品推荐
相关产品推荐

