我想插入唯一的電子郵件,并希望以類似于電子郵件已存在的形式顯示消息。當(dāng)我保存新記錄時(shí),它應(yīng)該返回一些響應(yīng),告訴它已經(jīng)存在于表中。模型類@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頁(yè)面<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>實(shí)體類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貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
在數(shù)據(jù)庫(kù)中的列上添加唯一鍵約束。如果您使用的是 hibernate,當(dāng)您嘗試插入重復(fù)的電子郵件時(shí)它會(huì)拋出ConstraintViolation異常,并且在更新時(shí)它會(huì)拋出DataIntegerityViolationException。
只需捕獲這些異常并返回您的錯(cuò)誤消息。

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您使用的是 hibernate 或 jpa,您可以像下面這樣使用。unique=true 確保電子郵件列值是唯一的。
@Column(name = "email", unique=true)
private String email;
否則你必須添加一個(gè)方法來檢查這個(gè)
if(userService.findUserByEmail() != null) {
// User already exists
}
添加回答
舉報(bào)
0/150
提交
取消