Я пытаюсь реализовать авторизацию пользователя на java ee 7. Для проверки введенных данных я использую аннотации Bean validation
.java ee bean validation
@NotNull(message = "Please enter email address")
@Column(name = "email")
private String email;
@NotNull(message = "Please enter password")
@Size(min = 6, max = 255)
@Column(name = "password")
private String password;
Также у меня есть @PrePersist
метод, который хэш введенный пароль
@PrePersist
public void updatePassword(String password) {
//some code
}
Вот метод, где зарегистрировать пользователя:
@EJB
private UserService userService;
public void register() {
if (userService.getByEmail(email) == null) {
try {
userService.register(email, password);
//log in if users is created
authController.setEmail(email);
authController.setPassword(password);
authController.login();
} catch (Exception e) {
setErrorMessage("Validation error");
}
} else {
setErrorMessage("Please choose another email address");
}
}
UserService
@Stateless
public class UserService {
@EJB
private UserDAO userDAO;
public void register(String email, String password){
User user = new User();
user.setEmail(email);
user.setPassword(password);
userDAO.create(user);
}
}
Проблема заключается в том если пароль равен нулю. Сначала был вызван метод updatePassword
, но не @NotNull
аннотация по password field
и, следовательно, я получаю NullPointerException.
. Как сделать это при первой проверке проверки, а затем позже других методах. Заранее спасибо!
Некоторые код здесь отсутствует. Покажите 'userService.register' и где вы вводите эту услугу. – Everv0id
Everv0id, я отредактировал мой вопрос – user3127896