基本上我的问题很简单,我有一个注册表,其中对“登录”字段有限制。
Table(uniqueConstraints=@UniqueConstraint(columnNames = { "login" }))
因此,当我添加一个已经存在的登录名时,会出现一个异常: 为密钥'UKew1hvam8uwaknuaellwhqchhb'重复的条目'MyLogin' 。
我在问百里香叶中是否有任何方法可以显示一条消息,说明该名称已经存在。
答案 0 :(得分:1)
在为新用户进行任何持久性事务之前,如果表中已经存在用户名,我将检查用户是否已经在表中已经存在具有相同用户名的用户(我认为您的“登录名”与该用户的用户名相同)。继续执行新的用户注册逻辑,并让表单控制器返回带有Model对象的视图,该Model对象具有service方法返回的重复的username属性。(可以在service方法中使用异常以获取更好的逻辑)
@RequestMapping("/registerNewUser")
public String showModel(@ModelAttribute UserDataTransferObject userDTO, Model model){
String existedUsername = service.createUser(userDTO);
if(existedUsername != null){
model.addAttribute("existedUsername",existedUsername);
}
return "registrationstatus";
}
createUser方法检查存储库中是否包含具有相同用户名的条目,如果是,则以字符串形式返回该用户名(简单实现)。
在百里香叶中
<div th:if="${existedUsername != null}" class="alert alert-danger notification" role="alert">
<p th:text="${existedUsername}"></p><p> already exists</p>
</div>