o problema está na validação…
no modo fluente, vc tem que falar o que vc quer que seja VERDADE, ou seja, no seu caso vc quer que o usuario e a seja não sejam nulos… então vc tem que fazer:
that(user.getUsername() != null && user.getPassword() != null, "errors", "login.username.password.empty");
lendo isso:
“Eu quero que o username não seja null e que o password não seja null”… daí se isso NÃO for verdade, o vraptor adiciona os erros de validação
entendeu?
o método isEmpty é do java 6
O que há de errado neste método? O validator sempre detecta a condição como verdadeira, mesmo user chegando no Controller com os atributos setados.
@Post
@Path("/manager/login/authenticate")
public void authenticate(final User user) {
validator.checking(new Validations() {
{
that(user.getUsername() == null || user.getPassword() == null, "errors", "login.username.password.empty");
}
});
validator.onErrorUse(Results.page()).forward("/manager/login");
result.redirectTo(HomeManagerController.class).home();
}
Assim ele simplesmente não valida e também ignora.
@Post
@Path("/manager/login/authenticate")
public void authenticate(final User user) {
validator.checking(new Validations() {
{
that(user.getUsername() == null || user.getPassword() == null, "errors", "login.username.password.empty");
}
});
validator.onErrorUse(Results.logic()).redirectTo(LoginManagerController.class).form();
result.redirectTo(HomeManagerController.class).home();
}
E nem assim
@Post
@Path("/manager/login/authenticate")
public void authenticate(final User user) {
validator.checking(new Validations() {
{
that(user.getUsername() == null || user.getPassword() == null, "errors", "login.username.password.empty");
}
});
validator.onErrorUse(Results.logic()).forwardTo(LoginManagerController.class).form();
result.redirectTo(HomeManagerController.class).home();
}
Putz! rsrs…
Altas horas da madrugada dá nisso. Foi vacilo meu, perdão. rs
Er, err… Isso também não está detectando os erros.
@Post
@Path("/manager/login/authenticate")
public void authenticate(final User user) {
validator.checking(new Validations() {
{
that(user.getUsername() != null, "errors", "login.username.empty");
that(user.getPassword() != null, "errors", "login.password.empty");
}
});
validator.onErrorUse(Results.logic()).forwardTo(LoginManagerController.class).form();
result.redirectTo(HomeManagerController.class).home();
}
OK… por padrão ele não deixa as Strings serem nulas e sim, vazias.
Engraçado que estou usando a JDK 1.5 e não aparece o método isEmpty.
Obrigado