私のアプリケーションで既存のユーザオブジェクトを編集するときに問題があります。まず、次のメソッドを提供するコントローラクラスがあります。Spring MVC - 既存のオブジェクトを編集するときの重複値
@Transactional
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public ModelAndView editUser(HttpServletRequest request) {
String eMail = request.getParameter("email");
User user = userDao.findUserByEMail(eMail);
ModelAndView model = new ModelAndView("UserForm");
model.addObject("user", user);
return model;
}
@Transactional
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public ModelAndView saveEditUser(@Valid User user, BindingResult result) {
System.out.println(user);
if (result.hasErrors()) {
return new ModelAndView("redirect:/");
}
userDao.saveOrUpdate(user);
return new ModelAndView("redirect:/");
}
私は2つのJSPファイルを持っています。最初のものはすべてのユーザー(データベースに格納されている)を表示し、既存のユーザーを編集する機会を提供します(新しいユーザーを追加する場合は同じJSP)。ユーザを編集した後
UserList.jsp
<div align="center">
<h1>Users List</h1>
<h2>
<a href="<c:url value='/new'/>">New User</a>
</h2>
<table border="1">
<th>No</th>
<th>Forename</th>
<th>Surname</th>
<th>Birthdate</th>
<th>E-Mail</th>
<th>Actions</th>
<c:forEach var="user" items="${userList}" varStatus="status">
<tr>
<td>${status.index + 1}</td>
<td>${user.forename}</td>
<td>${user.surname}</td>
<td>${user.birthdate}</td>
<td>${user.email}</td>
<td><a href="<c:url value='/edit?email=${user.email}'/>">Edit</a>
<a href="<c:url value='/delete?email=${user.email}'/>">Delete</a>
</td>
</tr>
</c:forEach>
</table>
</div>
UserForm.jsp
<div align="center">
<h1>New/Edit User</h1>
<table>
<form:form method="post" modelAttribute="user">
<form:hidden path="id" id="id" />
<tr>
<td>Forename:</td>
<td><form:input path="forename" id="forename" /></td>
</tr>
<tr>
<td>Surname:</td>
<td><form:input path="surname" id="surname" /></td>
</tr>
<tr>
<td>Birthdate:</td>
<td><form:input path="birthdate" id="birthdate" /></td>
</tr>
<tr>
<td>E-Mail:</td>
<td><form:input path="email" id="email" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"
value="Save"></td>
</tr>
</form:form>
</table>
</div>
<br />
<br /> Go back to
<a href="<c:url value='/listUsers' />">List of all users</a>
、ユーザのmail
属性が同じ値をもう一度含まなぜか分からない。例えば、私はUserA
にUser
からユーザーのsurname
を変更したいと私はエラーメッセージを得た:
org.springframework.validation.BeanPropertyBindingResult:1つのエラー
フィールドエラーオブジェクト内の「ユーザー」をフィールド 'メール'に:拒否された値 [test @ user.com、test @ user.com];コード [Email.user.email、Email.email、Email.java.lang.String、Email];引数 [org.springframework.context.support.DefaultMessageSourceResolvable: コード[user.email、email];引数[];デフォルトのメッセージ [email]、[Ljavax.validation.constraints.Pattern $ Flag; @ 653e5537、。*]; デフォルトのメッセージは、私はそれが起こると、あなたが私を助けることができる場合、私は嬉しくなる理由は分からない
[有効なメールアドレスを入力してください]。
ありがとうございました!私は '/ edit?email = ...'を '/ edit?usermail = ...'に変更しました。あなたは私をたくさん助けました。 – DarkwingBug