【发布时间】:2018-10-11 08:02:24
【问题描述】:
我想插入唯一的电子邮件并希望以类似的形式显示消息 - 电子邮件已存在。 当我保存新记录时,它应该返回一些响应,告诉它已经存在于表中。
模型类
@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;
}
【问题讨论】:
-
在您的服务类中,如果已经存在具有相同电子邮件地址的用户,则只需抛出某种
RuntimeException。使用 Spring 异常处理程序将异常映射到自定义错误表示,您可以在客户端中使用它。对错误请求使用响应代码 400。
标签: java hibernate spring-mvc jsp