我想插入唯一的电子邮件,并希望以类似于电子邮件已存在的形式显示消息。当我保存新记录时,它应该返回一些响应,告诉它已经存在于表中。模型类@PostMapping("/user")public ModelAndView processRegistrationForm(@ModelAttribute("user") @Valid Users user, BindingResult result) { if (result.hasErrors()) { return new ModelAndView(landingPage); } else { try { userService.saveUser(user); } catch (Exception e) { e.printStackTrace(); } return new ModelAndView("redirect:/user"); }}JSP页面<form:form action="${registerUrl}" modelAttribute="user" method="post"> <div class="form-group"> ... <c:if test="${user.userId eq null}"> <input class="btn btn-success" type="submit" value="Register"> </c:if> </div></form:form>实体类public class Users { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_generator") @SequenceGenerator(name="users_generator", sequenceName = "SEQ_USERS", allocationSize=1) @Column(name="USER_ID") private Integer userId; @Column(name="LOGIN_NAME") private String loginName; @NotEmpty @Email @Column(name="MAIL_ID", unique=true) private String mailId; @NotEmpty @Column(name="FIRST_NAME") private String firstName;}
2 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
在数据库中的列上添加唯一键约束。如果您使用的是 hibernate,当您尝试插入重复的电子邮件时它会抛出ConstraintViolation异常,并且在更新时它会抛出DataIntegerityViolationException。
只需捕获这些异常并返回您的错误消息。
收到一只叮咚
TA贡献1821条经验 获得超4个赞
如果您使用的是 hibernate 或 jpa,您可以像下面这样使用。unique=true 确保电子邮件列值是唯一的。
@Column(name = "email", unique=true)
private String email;
否则你必须添加一个方法来检查这个
if(userService.findUserByEmail() != null) {
// User already exists
}
添加回答
举报
0/150
提交
取消