Obserwuję samouczka na http://www.playframework.org/documentation/2.0/JavaFormsKształt ramy zabaw walidacja 2,0
Utworzyłem LoginForm.java klasy (zamiast User.class od przykładu. Nie jest to klasa dla utrzymujących się tylko formą wartości uchwyt)
package domain;
import static play.data.validation.Constraints.*;
public class LoginForm {
@Required
public String email;
public String password;
}
a w moim kontroler mam zrobić (jako przykład), ale ja ustawić wartości opróżnić Strings spróbować @Required adnotacji.
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);
}
Ale w:
LoginForm postedLoginForm = loginForm.bind(anyData).get();
uzyskać wyjątek wykonania [[IllegalStateException: Brak wartości]]
więc nigdy nie sprawdza/przychodzi do
if(loginForm.hasErrors())
Czy ktoś wiesz, dlaczego tak jest? Jeśli ustawię wartości jako przykład:
Map<String,String> anyData = new HashMap();
anyData.put("email", "[email protected]");
anyData.put("password", "secret");
Wszystko działa i pobieram obiekt LoginForm z poprawnymi wartościami. Czy mam złapać wyjątek? Nie powinno się tego przejmować i ustawić loginForm.hasErrors = true?
Dzięki za pomoc!
Wygląda na to, że wyjątek IllegalStateException pochodzi z 'bind'. Być może ta metoda nie pozwala ci na "bind" lub "get", gdy twoja mapa nie ma danych. –
Widzę, ale to samo dotyczy prawdziwego postu, gdy używam loginForm.bindFromRequest(). Get(), który wiąże dane z żądania. Jak można sprawdzić, czy użytkownik nie wstawił żadnych danych w polach formularza? Bez konieczności pisania własnej metody sprawdzania poprawności? –
Ale powiedziałeś, że prawdziwe prace pocztowe, w których nie masz pustych wartości na mapie. –