2015-05-28 3 views
-1

У меня есть два метода: логин и регистрация, оба из них используют класс «Пользователь», который содержит имя пользователя, адрес электронной почты и пароль. Я установил все три поля как @Required. Он отлично работает для регистрации, поскольку требуются все три поля. Вот вопрос: я только хочу использовать имя пользователя и пароль для входа в систему, но это вызовет ошибку при вызове метода bindFromRequest(). Есть ли способ, кроме удаления аннотации @Required для поля электронной почты или создания двух разделенных классов «Пользователь» для входа и регистрации?play2 framework @Required field issue

ответ

0

Как вы упомянули, одним из способов было бы удалить аннотацию @Required для поля электронной почты. Второй способ - создать отдельный класс User для обоих действий. Третий способ будет использовать динамические формы, как это:

public Result hello() { 
    DynamicForm requestData = Form.form().bindFromRequest(); 
    String username = requestData.get("username"); 
    String password = requestData.get("password"); 
    // now do something with the data we got... 
    return ok("Hello " + username); 
} 
0

Одно из решений указываемого Антон - ручной выборки поля с DynamicForm.

Во-вторых, создает дополнительный класс, как LoginForm, который содержит только поля и аннотаций, требуемые процессом LogN, а затем использовать его как Form<LoginForm> ... вместо Form<User> ...

Третий вариант создания пользовательских Required аннотацию, которая является контекстно-зависимой, во всяком случае наиболее probbaly предыдущее (второе) решение будет проще реализовать.

Смежные вопросы