Я новичок в Spring и у меня проблема с проверкой формы. В моей форме редактирования я хочу проверить только определенные поля, а не все поля, аннотированные в моей сущности. Например, если у меня UserEntity с полями:Java Spring: как проверять только определенные поля из моего объекта
@Entity
@Table(name = "users")
public class UserEntity {
@Id
@Column(name = "user_id")
@GeneratedValue
public int user_id;
@NotEmpty
@Column(name = "userlogin")
public String userlogin;
@NotEmpty
@Column(name = "userpass")
public String userpass;
@NotEmpty
@Column(name = "name")
public String name;
@Email
@NotEmpty
@Column(name = "email")
public String email;
@NumberFormat(style = Style.NUMBER)
@NotEmpty
@Column(name = "phone")
public String phone;
и когда я зарегистрироваться форму, мне нужно проверить все поля, и это работает отлично. Но когда я редактирую пользовательскую форму, я хочу редактировать и проверять только «имя», «письмо» и «телефон», я не хочу менять «userlogin» и «userpass». Но форма редактирования не пройдет успешно, потому что BindingResult проверяет все поля. Вот моя форма редактирования:
<springForm:form action="/mywebapp/user/edit" commandName="user" method="POST">
<table>
<tr>
<td>Name:</td>
<td><springForm:input path="name" value="${user.name}" /></td>
<td><springForm:errors path="name" cssClass="error" /></td>
</tr>
<tr>
<td>E-mail:</td>
<td><springForm:input path="email" value="${user.email }" /></td>
<td><springForm:errors path="email" cssClass="error" /></td>
</tr>
<tr>
<td>Phone:</td>
<td><springForm:input path="phone" value="${user.phone}" /></td>
<td><springForm:errors path="phone" cssClass="error" /></td>
</tr>
<tr>
<td><input type="submit" value="Edit" /></td>
</tr>
</table>
</springForm:form>
Вот мой метод контроллера:
@RequestMapping(value="user/edit", method=RequestMethod.POST)
public String doUserEdit(@Valid @ModelAttribute("user") UserEntity user, BindingResult result, Principal principal) {
if(result.hasErrors()) {
return "user/edit";
}
UserEntity u = this.userService.getUser(principal.getName());
this.userService.editUser(u.getUser_id(), user);
return "redirect:/user";
}
result.hasError() всегда возвращает истину, потому что проверка также 'Userlogin' и 'UserPass'.
Как игнорировать другие поля в форме редактирования и проверять только те поля, которые я хочу?
создать собственный класс валидатора, реализовав интерфейс Validator и вызвать метод проверки вручную. – Rembo