Required="true" primafaces

6 respostas
E

Pessoal,

Tenho duas abas. Endereco Residencial e Endereco Comercial com os seguintes campos : CEP, Endereco, Bairro, etc.

Gostaria de fazer assim:

Se tiver preenchido os campos da Aba Endereco Residencial, ok pode gravar
ou
Se tiver preenchido os campos da Aba Endereco Comercial, ok pode gravar
ou
Se tiver os campos Aba Endereco Residencial e comercial , estiverem preenchidos , ok pode gravar.

Se tiver os campos Aba Endereco Residencial e comercial , estiverem em branco - Exibir mensagem de erro.

Minha duvida é o seguinte,

Consigo fazer isso utilizando required do primafaces ?? se sim como eu faria isso

<p:inputText id="cep" label="Cep" value="#{funcionarioBean.cep}" 
									
required="true" validatorMessage="Campo deve ser preenchido com Cep" 
										size="60" maxlength="50">

6 Respostas

G

Pq vc nao coloca um action pra qndo pular para aba endereço comercial verificar se os campos do endereço residencial foi preenchido...se foi coloca no required uma variavel como falso(não obrigatorio), se nao, verdadeiro...

a ideia seria isso... mais a ação tem que estar na aba... qndo for acionada fazer a verificação.

<p:inputText id="cep" label="Cep" value="#{funcionarioBean.cep}"   
                                      
required="#{funcionarioBean.obrigatorioRes}"    validatorMessage="Campo deve ser preenchido com Cep"   
                                        size="60" maxlength="50">  
...
[code]
<p:inputText id="cep" label="Cep" value="#{funcionarioBean.cep}"   
                                      
required="#{funcionarioBean.obrigatorioCom}"    validatorMessage="Campo deve ser preenchido com Cep"   
                                        size="60" maxlength="50">
funcionarioBean
public void verificaObrigatoriedade(){ // nao lembro de cabeça se tem que ser é void ou String;

//verifica se foi preenchido no residencial
if(){
  //verdadeiro
            obrigatorioCom = false;
            obrigatorioRes = true;
  }else {
           obrigatorioCom  = true;
           obrigatorioRes = false;
  }
}

Espero que de certo... t+

E

Tentei fazer assim :

Porem estou com problema no validator, eu digito o campo Cep Comercial e aperto o botao salvar,
ele entrar no validator cepResValidator, porem a primeira vez ele tem o conteudo nullo.(ele só aparece apenas quando aperto o botao na segunda ou terceira vez, mesmo
assim sempre com o valor anterior)
Gostaria que quando digitasse o cep : 1300000 entrasse no validator e capturasse o valor 1300000.

Alguem pode me ajudar ?

<h:form id="form">  
            <h:messages />            


            <h:outputText value="Cep Residencial" /><br/>
            <p:inputText value="#{tableBeant.cepres}" binding="#{cepres}" >  
                <f:validator validatorId="cepResValidator"></f:validator>
                <f:attribute name="cepcom" value="#{cepcom}"></f:attribute>
            </p:inputText>           
            <br/>                           
            <h:outputText value="Cep Comercial" /><br/>
            <p:inputText value="#{tableBeant.cepcom}" binding="#{cepcom}">   
                <f:validator validatorId="cepComValidator"></f:validator>
            </p:inputText>
            <h:commandButton value="ok" actionListener="#{tableBeant.salvar}"/>


        </h:form>  

public class CepResValidator implements Validator {

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        UIInput cepcomComponent = (UIInput) component.getAttributes().get("cepcom");

        //Get the value from the UIInput component.
/*        String cepcom = (String) cepcomComponent.getValue();
        System.out.print("cepp "+cepcom);*/
        String vcepres = (String) value;
        if (vcepres.equals("")) {
            FacesMessage message = new FacesMessage(
                    FacesMessage.SEVERITY_ERROR, "Cep Residencial Obrigatorio",
                    "The email address you entered is not valid.");
            throw new ValidatorException(message);

            ///        throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Passwords dont match!!!", null));
        }

        
    }
}
G

da uma olhada sobre ajax, o próprio primefaces tem suporte!!

E

vc diz assim ???

<p:ajax event=" update="..."
E

Alguemmm ???

Roselito_Favero_da_S

Vamos ver se eu consigo ajudar: o JSF só consegue validar um campo por vez. Diante disso, o truque é colocar o validador em apenas um dos campos. Os outros devem conter <h:message> individuais e devem estar com immediate=“true”.

Como o validador vai ficar no bean, lá é feita a análise de cada campo e disparadas as mensagens de erro para cada campo. No final, se houver erro, é lançada a exceção para ativar as mensagens. Dessa maneira, a multi-validação está simulada.

Há um exemplo muito bom aqui: http://blog.sbeynon.net/2012/04/jsf-validator-multiple-fields-message.html

Veja que apenas o campo id=“username” tem validator e required=“true”, mas os outros são validados também, só que no bean.

Espero que com esse exemplo aí você possa adaptar seu caso.

Criado 9 de outubro de 2013
Ultima resposta 10 de out. de 2013
Respostas 6
Participantes 3