Pergunta

Fiquei me perguntando, estou negligenciando algo ou o Validador do Hibernato não oferece anotação para verificar se 2 campos são iguais (como uma senha). Sei que posso escrever meus próprios validadores, mas bem, isso parece funcionalidade padrão.

Foi útil?

Solução 3

Apenas fui para a rota do validador personalizada. As outras duas respostas aqui não estão realmente relacionadas à pergunta. Com um pouco de Google, encontrei um exemplo de campo de campo.

Outras dicas

Se você estiver usando a Spring Framework, poderá usar o Spring Expression Language (SPEL) para isso. Escrevi uma pequena biblioteca que fornece ao Validador JSR-303 com base no SPEL que facilita muito as validações de campo cruzado. Dar uma olhada em https://github.com/jirutka/validator-spring.

Isso validará a igualdade de campos de senha quando pelo menos um deles não estiver vazio.

@SpELAssert(value = "password.equals(passwordVerify)",
            applyIf = "password || passwordVerify",
            message = "{validator.passwords_not_same}")
public class User {

    private String password;
    private String passwordVerify;
}

Um exemplo bem estabelecido que trata de um problema semelhante, isto é, validação de campo cruzado:

Validação em campo cruzado com o Validador de Hibernato (JSR 303)

Hibernate é um mapeador ORM.

É usado para persistir dados em um banco de dados e extraí -los novamente. Como tal, ter 2 campos com um valor idêntico não faz muito sentido (do ponto de vista da persistência). Isso é algo que você deve verificar na sua lógica de negócios.

E eu estou com Junesh ... não persista suas senhas em um formato recuperável ... procure haver e salgar - ou melhor ainda, pense em OpenID para que você não precise incomodar seus clientes com mais uma senha estúpida ...

Espero que você não esteja salvando a senha Confirmar também no banco de dados. Você não possui vorações fora da caixa para isso, mas, em vez disso, precisará usar a anotação personalizada, o que também é bastante direto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top