Verificar se o email e a confirmação do email são iguais [RESOLVIDO]

2 respostas
jrfercar

Bom dia.

Tenho que verificar se o email e a confirmação do email são iguais, mas não tá dando certo.

public void validateEmail(FacesContext context, UIComponent toValidate, Object value) throws ValidatorException {
        String varConfirmaEmail = (String) value;
        String varEmail = (String) this.emailInput.getLocalValue(); <---- está retornando null

        if (Validator.validaEmail(varEmail)) {
            if (!varConfirmaEmail.equals(varEmail)) {
                ((UIInput) toValidate).setValid(false);

                FacesMessage message = new FacesMessage(" *Email não corresponde ");
                context.addMessage(toValidate.getClientId(context), message);
            }
        } else {
            FacesMessage message = new FacesMessage("Formato inválido");
            context.addMessage(toValidate.getClientId(context), message);
        }
    }
<p:panel id="pnlEmail" header="Correio Eletrônico" >
            <h:panelGrid columns="3" cellpadding="3" >
                <h:outputLabel value="E-mail" for="txtEmail"/>
                <p:inputText id="txtEmail" value="#{cadastroDePessoaBean.strEmail}" required="true" size="40">
                    <p:watermark for="txtEmail" value="Digite seu email" />
                </p:inputText>
                <p:message for="txtEmail" />
                <h:outputLabel value="Confirma E-mail" for="txtConfirmaEmail"/>
                <p:inputText id="txtConfirmaEmail" validator="#{cadastroDePessoaBean.validateEmail}" required="true" size="40" binding="#{cadastroDePessoaBean.emailInput}">
                    <p:watermark for="txtConfirmaEmail" value="Confirme seu email" />
                </p:inputText>
                <p:message id="msgEmail" for="txtEmail" />
            </h:panelGrid>
        </p:panel>

(String) this.emailInput.getLocalValue(); está retornando null.

Aguem pode me ajudar neste probleminha.

Desde já agradeço.

2 Respostas

A

Bom, um conselho, crie um campo para a verificação, assim te poupa dor de cabeça.

private String email;
private Strin cEmail;

/*
 *getter e setter
 */

public void validateEmail(FacesContext context, UIComponent toValidate, Object value) throws ValidatorException {  
    if (email.equals(cEmail)) {  
                MSG1
    } else { 
                MSG2
    }
}

a validação você pode fazer via regex que te salva mto tempo

jrfercar

Beleza, valeu pela dica.

consegui resolver mudando isto:

<p:panel id="pnlEmail" header="Correio Eletrônico" >
            <h:panelGrid columns="3" cellpadding="3" >
                <h:outputLabel value="E-mail" for="txtEmail"/>
                <p:inputText id="txtEmail" value="#{cadastroDePessoaBean.strEmail}" required="true" binding="#{cadastroDePessoaBean.emailInput}">
                    <p:watermark for="txtEmail" value="Digite seu email" />
                </p:inputText>
                <p:message for="txtEmail" />
                <h:outputLabel value="Confirma E-mail" for="txtConfirmaEmail"/>
                <p:inputText id="txtConfirmaEmail" value="#{cadastroDePessoaBean.confirmaEmail}" required="true" validator="#{cadastroDePessoaBean.validateEmail}">
                    <p:watermark for="txtConfirmaEmail" value="Confirme seu email" />
                </p:inputText>
                <p:message id="msgEmail" for="txtEmail" />
            </h:panelGrid>
        </p:panel>

Alterando utilizando o binding no txtEmail e o validator em txtConfirmaEmail.

Mas de qualquer forma, valeu pela dica.

Muito obrigado.

Criado 27 de julho de 2011
Ultima resposta 27 de jul. de 2011
Respostas 2
Participantes 2