Инфраструктура проверки формы 2.0

Я следую руководству на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 = form(LoginForm.class);
Map 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();

я получаю исключение Execution [[IllegalStateException:No value]]

Таким образом, оно никогда не проверяет/доходит до

if(loginForm.hasErrors()) 

Кто-нибудь знает, почему это так? Если я установлю значения в качестве примера :

Map anyData = new HashMap();
anyData.put("email", "bob@gmail.com");
anyData.put("password", "secret");

, все работает, и я получаю объект LoginForm с правильными значениями. Я должен поймать исключение? Разве игра не должна позаботиться об этом и установить loginForm.hasErrors = true?

Спасибо за любую помощь!

7
задан John Rodrick 2 April 2012 в 20:53
поделиться