[RESOLVIDO] Como validar valores JSF + Primefaces

7 respostas
F

fala galera…

seguinte, gostaria que vocês pudessem me ajudar…

Estou criando uma aplicação em JSF com Primefaces 3.0.M1 e tenho este seguinte formulário para cadastro de compromissos:

<p:growl id="growlNewCompromisso" showDetail="true"/>
       <h:form id="cadastroDeCompromisso"> 
            <p:panel header="Nova Compromisso">
                <h:panelGrid columns="2" id="cadCompromisso">
                    <h:outputLabel value="Hora Inicial:* " for="horaInicial"/>
                    <p:calendar id="horaInicial" timeOnly="true" locale="br" pattern="HH:mm" minHour="8" maxHour="18" value="#{beanConsulta.consulta.horaInicial}"
                                required="true" requiredMessage="Preencha o campo Hora Inicial!"/>
                    
                    <h:outputLabel value="Hora Final:* " for="horaFinal"/>
                    <p:calendar id="horaFinal" timeOnly="true" locale="br" pattern="HH:mm" minHour="8" maxHour="18" value="#{beanConsulta.consulta.horaFinal}"
                                required="true" requiredMessage="Preencha o campo Hora Final!"/>
                    
                    <h:outputLabel value="Descrição:* " for="desc"/>
                    <p:inputText id="desc" value="#{beanConsulta.consulta.desc}"
                                 required="true" requiredMessage="Preencha o campo Descrição!"/>

                </h:panelGrid>
                <p:commandButton value="Salvar" update="cadastroDeCompromisso,growlNewCompromisso" action="#{beanConsulta.gravar()}"/>
             </p:panel>
       </h:form>

a dúvida é: Como eu posso fazer para que somente seja cadastrado se o campo horaFinal seja maior que hora Inicial?

Por favor, alguém pode ajudar?

7 Respostas

H

Ou você faz uma validação JavaScript ou faça uma validação no método que cadastra.

Mas o ideal é que sempre seja feita a validação no método de cadastro.

I

Fala flpmchd,

eu faria ± assim:

public void gravar(){
     if(consulta.getHoraFinal().after(consulta.getHoraInicial())){
          //sua lógica   
     }
     else{
          FacesContext.getCurrentInstance().addMessage("paginaCadastro",new FacesMessage("hora final não pode ser anterior a hora inicial."));
     }
}
M

o codigo do igor estar perfeito! sempre de preferencia para fazer validações no metodo, por que voce tem mais controle, e voce esta usando o primefaces 3.0 M1 então tem muita coisa boa pronta para validação de campos simples, exemplo: usando o required=“true”, mais pode seguir esse exemplos mesmo que vai funcionar perfeitamente.

F

Igor…

Funcionou perfeitamente, muito obrigado, pois preciso fazer outras validações como esta…

Flw…

F

marllondsp…

realmente o primefaces traz para o desenvolvedor vários benefícios na hora de programar… eu uso sim o required e tem vários outros tbm…

I

Show de bola cara,
po, já que resolveu então você pode colocar como resolvido.
Abraço.

N

eu faria diferente… pegaria a hora inicial passada … utilizaria um <f:ajax> para render meu segundo calendar com hora, e colocaria no minhour="#{meubean.suaclasse.horaInicial}" a hora inicial passada pelo bean…

assim evita do usuário ficar recebendo mensagens desagradáveis todas as horas… hahuahuha

att

Criado 24 de novembro de 2011
Ultima resposta 23 de dez. de 2011
Respostas 7
Participantes 5