Я следую учебному пособию по http://www.playframework.org/documentation/2.0/JavaForms
Я создал класс LoginForm.java (вместо User.class из примера. Не класс для сохранения, просто держатель значений формы)
package domain;
import static play.data.validation.Constraints.*;
public class LoginForm {
@Required
public String email;
public String password;
}
И в моем контроллере я делаю (как пример), но я устанавливаю значения в пустые строки, чтобы попробовать аннотацию @Required.
Form<LoginForm> loginForm = form(LoginForm.class);
Map<String,String> anyData = new HashMap();
anyData.put("email", "");
anyData.put("password", "");
//Faking a post
LoginForm postedLoginForm = loginForm.bind(anyData).get();
if(loginForm.hasErrors()) {
//Just for this test task, should have another error handling..
return ok("@Required annotation kicked in..");
} else {
return ok("Got form values, email: " + postedLoginForm.email + " password: " + postedLoginForm.password);
}
Но по адресу:
LoginForm postedLoginForm = loginForm.bind(anyData).get();
Я получаю исключение Выполнения [[IllegalStateException: Нет значения]]
Так что он никогда не проверяет / не приходит к
if(loginForm.hasErrors())
Кто-нибудь знает, почему это так?Если я установлю значения в качестве примера:
Map<String,String> anyData = new HashMap();
anyData.put("email", "bob@gmail.com");
anyData.put("password", "secret");
Все работает, и я получаю объект LoginForm с правильными значениями.Я должен поймать исключение?Не стоит ли позаботиться об этом и установить loginForm.hasErrors = true?
Спасибо за любую помощь!