Dúvida com o calendário do rich faces

8 respostas
SanjuanRJ

Estou usando esse cara…

import org.richfaces.component.html.HtmlCalendar

vou lá e escolho uma data, a data aparece direitinho no input q ele gerou…

aperto o botão de submit,
mas quando no meu managed bean eu tento dar um getValue ele me retorna null

alguém tem alguma sugestão?

eu coloquei o
form1.setSubmitted(true);

8 Respostas

C

Posta o seu código.

SanjuanRJ
public class RelatorioProdutosVendidos
{
    private HtmlOutputText output1 = new HtmlOutputText();
    
    //Título
    private HtmlOutputText titulo1 = new HtmlOutputText();
    //Formulário de Busca
    private UIDiv divBusca = new UIDiv();
    private HtmlOutputText espaco1 = new HtmlOutputText();
    private HtmlOutputText espaco2 = new HtmlOutputText();
    private HtmlForm form1 = new HtmlForm();
    private HtmlOutputText texto1 = new HtmlOutputText();
    private HtmlOutputText texto2 = new HtmlOutputText();
    private HtmlOutputText texto3 = new HtmlOutputText();
    
    private HtmlCommandButton botao1 = new HtmlCommandButton();
    
    private HtmlCalendar calendarioDe = new HtmlCalendar();
    private HtmlCalendar calendarioAte = new HtmlCalendar();
    
    private String load;
    private HtmlOutputText title = new HtmlOutputText();

    public String getLoad() 
    {
        try 
        {
            Conteudo_Estatico conteudo_estatico1 = new Conteudo_Estatico();
            FacesContext fc = FacesContext.getCurrentInstance();
            Navegacao navegacao1 = new Navegacao(fc, "relatorioProdutosVendidos");
            Conteudo conteudo1 = navegacao1.getConteudo1();
            //********************CONTEUDO PRINCIPAL*********************************
            
            title.setEscape(false);
            title.setValue("<title>Berkeley - Equipamentos Médicos, Hospitalares e Simuladores</title>");

            titulo1.setValue("<h1>Relatório de produtos vendidos</h1>");
            titulo1.setEscape(false);
            output1.getChildren().add(titulo1);
            
            //Formulário de Busca
            texto1.setValue("De: ");
            texto2.setValue("Até: ");
            espaco1.setValue("&nbsp;&nbsp;&nbsp;");
            espaco2.setValue("&nbsp;&nbsp;&nbsp;");
            espaco1.setEscape(false);
            espaco2.setEscape(false);
            botao1.setValue("Buscar");
            
            calendarioDe.setPopup(true);
            calendarioDe.setDatePattern("d/M/yyyy");
            calendarioDe.setAjaxSingle(true);
            
            calendarioAte.setPopup(true);
            calendarioAte.setDatePattern("d/M/yyyy");
            
            texto3.setValue("texto a trocar");

            form1.setSubmitted(true);
            form1.getChildren().add(texto1);
            form1.getChildren().add(getCalendarioDe());
            form1.getChildren().add(espaco1);
            form1.getChildren().add(texto2);
            form1.getChildren().add(getCalendarioAte());
            form1.getChildren().add(espaco2);
            form1.getChildren().add(botao1);
            form1.getChildren().add(texto3);
            
            botao1.setAction(fc.getApplication().createMethodBinding("#{RelatorioProdutosVendidos.gerarRelatorio}", null));
            
            divBusca.setStyleclass("esquerda");
            divBusca.getChildren().add(form1);
            
            output1.getChildren().add(divBusca);
        } 
        catch (Exception e) 
        {
            Logging.Excecao(e, "gestao.paginas.Principal.getLoad");
            return null;
        }
        return load;
    }
    
        public void gerarRelatorio() throws IOException, ParseException 
        {  
           FacesContext context = FacesContext.getCurrentInstance();  
           HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();  
           InputStream reportStream = context.getExternalContext().getResourceAsStream("/relatorios/produtos.jasper");  
              
           response.setContentType("application/pdf");  
           response.setHeader("Content-disposition", "attachment;filename=RelatorioDeProdutos.pdf");  
             
           ServletOutputStream servletOutputStream = response.getOutputStream();  
           
           String parametro1 = (String)calendarioDe.get
           String paramentros1[] = parametro1.split("/");
           
           parametro1 = paramentros1[2] + "-" + paramentros1[1]  + "-" + paramentros1[0];
           
           String parametro2 = (String)calendarioAte.getValue();
           String paramentros2[] = parametro1.split("/");
           
           parametro2 = paramentros2[2] + "-" + paramentros2[1]  + "-" + paramentros2[0];
           
           Map parameters = new HashMap();  
           parameters.put("dataIni",parametro1);
           parameters.put("dataFim",parametro2);
           texto3.setValue((String)calendarioDe.getValue() + "  -  " + (String) calendarioAte.getValue());
           try 
           {  
               JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameters, Coneccao.getConnection());
           } 
           catch (JRException e) 
           {  
               e.printStackTrace();  
           }    
           context.responseComplete();  
           servletOutputStream.flush();  
           servletOutputStream.close();  
       }  
    
    public HtmlOutputText getOutput1() {
        return output1;
    }

    public HtmlOutputText getTitle() {
        return title;
    }

    public HtmlOutputText getTitulo1() {
        return titulo1;
    }

    public HtmlCalendar getCalendarioDe() {
        return calendarioDe;
    }

    public void setCalendarioDe(HtmlCalendar calendarioDe) {
        this.calendarioDe = calendarioDe;
    }

    public HtmlCalendar getCalendarioAte() {
        return calendarioAte;
    }

    public void setCalendarioAte(HtmlCalendar calendarioAte) {
        this.calendarioAte = calendarioAte;
    }

}
C

Bom,

Não estou acostumado a ver código das paginas html gerados a partir dos beans, por isso fica mais dificil para eu analisar, mas uma coisa a se pensar é: tenta usar o form do richfaces a4j:form ao invés do form padrão.

[]'s Claudiney

SanjuanRJ

hmm, boa idéia essa sua, vou tentar…

com relação ao código ele funcina normalmente como se fosse em um binding

C

outra coisa é que eu sempre coloco os trechos que serão em ajax dentro de um outputpanel, pois alguns componentes, que não são do richfaces por exemplo, precisam disso.

SanjuanRJ

Eu queria que quando eu escolhesse uma data no calendário, ele atualizasse o HmlCalendar, para que eu consiga pegar a data quando eu clicar no botão que gera o evento.

Você não teria algum exemplo de um managed bean acompanho do jsp?

C

Quando eu usei este componente eu copiei o exemplo que tem na pagina do Richfaces. funcionou certinho, só que lá eles usavam faceletes. Pega lá o exemplo, é bem simples.

SanjuanRJ

Eu já consegui fazer funcionar.

O meu código estava certo, era só botar
calendarioAte.setValueBinding(“binding”, fc.getApplication().createValueBinding("#{RelatorioProdutosVendidos.calendarioAte}"));

q eu tinha esquecido q é preciso fazer isso…

valeu pela ajuda

Criado 11 de fevereiro de 2008
Ultima resposta 12 de fev. de 2008
Respostas 8
Participantes 2