[Resolvido] Validar Campos Renderizados na página via Ajax

2 respostas
D

Boa noite pessoal, gostaria de saber se existe uma maneira de validar campos obrigatorios na pagina que são renderizados via ajax.
Por exemplo, seleciono o tipo de pessoa [fisica ou juridica], conforme essa escolha eu mostro ou não o campo razao social, mas ele deve ser preenchido, como faço para validá-lo ?

Abaixo segue meu campo

<p:outputPanel id=“boxJuridicoRazaoSocial”>						

<h:outputLabel value=“Razão Social” for=“juridicoRazaoSocial” title=“Razão Social” />

<p:inputText id=“juridicoRazaoSocial” label=“Razão Social” value="#{meubean.rz}" required=“true” requiredMessage=“Preencha a razao social” />

</p:outputPanel>

Att

2 Respostas

vinnysoft

Boa Tarde Amigo.

Uma solução é criar uma classe que implemente a interface javax.faces.validator.Validator.

Um exemplo de validação de email:

public class Validacao implements Validator{

public void validate(FacesContext facesContext, UIComponent uIComponent, Object object) throws ValidatorException {

    String enteredEmail = (String)object;
    Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
    Matcher m = p.matcher(enteredEmail);

    boolean matchFound = m.matches();

    if (!matchFound) {
        FacesMessage message = new FacesMessage();
        message.setDetail("E-mail incorreto!");
        message.setSummary("E-mail incorreto!");
        message.setSeverity(FacesMessage.SEVERITY_ERROR);
        throw new ValidatorException(message);
    }
  }
}

Mapear no faces-config.xml (acredito que possa ter alguma annotation se estiver usando JSF 2.0):

<validator>
        <validator-id>validarEmail</validator-id>
        <validator-class>br.com.minhaApp.Validacao</validator-class>
    </validator>

Na view:

<h:inputText id="email"    styleClass="tamanhoPadrao"
                                         maxlength="50"
                                         value="#{meuBean.email}"
                                         validatorMessage="Email Inválido!">
                                <f:validator validatorId="validarEmail"/>                            
                            </h:inputText>
                            <h:message for="email" style="color:red" />

Até +!

D

Obrigado vinnysoft, sua resposta foi util para eu efetuar a validação do email do cliente,
mas o problema que eu tinha resolvi mudando o scope da pagina da request para view.
att

Criado 11 de novembro de 2011
Ultima resposta 15 de nov. de 2011
Respostas 2
Participantes 2