Array
(
)

Ao Manter Foco em um inputText preciso executar um relatório ao sair deste Campo. JSF RichFaces

Victor Lima
   - 28 out 2009


 Boa Tarde.

 Estou desenvolvendo uma Tela onde o usuario entra com um numero em um inputText e logo pressiona TAB, essa entrada de dados tambem é através de uma Leitora de Codigos de Barra.
Ao sair do Campo o relatório deveria ser executado, mas não sei como proceder para que isso acontece.
Conseguir usando jQuery mater o focu no campo, sempre que sair retornar para o mesmo.

Segue exemplo:

Codigo jQuery usado  funcionando ok:

function mantemFocus(){
                  
                 jQuery( ".meuInput" ).blur( function(){
                          setTimeout( function(){
                        jQuery( ".meuInput" ).focus()
                     },0);
                 });
              
                 }

Tela onde o usuario entra com o dados :

Codigo desta Pagina :

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:c="http://java.sun.com/jstl/core"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">

    <body>
        <ui:composition template="../layouts/template.xhtml">
            <ui:define name="content">
                <rich:panel style="width:800px;height:300px">
                    <f:facet name="header">
                        <h:outputText value="Impressão de Etiquetas"/>
                    </f:facet>
                    <h:form id="etiqueta">
                        <h:panelGrid columns="3">
                            <h:outputText  styleClass="rich-label" value="Tipo de Etiqueta" />
                            <rich:comboBox  size="2" label="Tipo de Etiqueta" defaultLabel="Selecione a Etiqueta" id="etiqueta" required="true" value="">
                                <f:selectItem itemValue="Endereçamento"/>
                                <f:selectItem itemValue="Simples"/>
                                <f:validateLength minimum="4" maximum="30" />
                            </rich:comboBox>

                            <h:selectOneRadio styleClass="rich-label">

                                <f:selectItem itemLabel="Numero de Nota Fiscal" itemValue="nota"/>
                                <f:selectItem itemLabel="Numero do Pedido" itemValue="pedido"/>
                                <a4j:support event="onclick" reRender="tipo"/>

                            </h:selectOneRadio>
                        </h:panelGrid>

                        <h:outputText  styleClass="rich-label" value="Entre com os dados:" />
                        <h:inputText  label="Dados" size="15"  id="meuInput" required="true" value="#{etiquetasController.num_notafiscal}"
                        class="meuInput" onblur="javascript:mantemFocus();">
                            <rich:ajaxValidator event="onblur"/>
                            <f:validateLength minimum="6" maximum="15" />
                        </h:inputText>

                        <c:if test="${not empty etiquetasController.num_notafiscal}">
                            <br />
                            <rich:dataTable  id="etiquetas" rendered="true"  var="item" value="#{etiquetasController.etiquetas}" style="width:400px">

                                <rich:column id="numped">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Fotnecimento" /></f:facet>
                                    <h:outputText value="#{item[0]}"  />
                                </rich:column>

                                <rich:column id="nota">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Nota Fiscal" /></f:facet>
                                    <h:outputText value="#{item[9]}"  />
                                </rich:column>

                                <rich:column id="datanota">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Data Nota" /></f:facet>
                                    <h:outputText value="#{item[10]}">
                                        <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"/>
                                    </h:outputText>
                                </rich:column>

                                <rich:column id="nome">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Nome Cliente" /></f:facet>
                                    <h:outputText value="#{item[3]}"/>
                                </rich:column>

                            </rich:dataTable>

                            <h:commandLink value="Imprimir" action="#{etiquetasController.executarEtiqueta}" />

                        </c:if>
                    </h:form>
                </rich:panel>

            </ui:define>
        </ui:composition>
    </body>
</html>

Codigo Java onde executa o Relatório, so funciona usando commandLink.

 @SuppressWarnings("unchecked")
   //executa o relatório através do actionListener
    public void executarEtiqueta() throws java.text.ParseException, IOException, ParseException {

        this.todosResultsPesq();
      

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

        //pega o caminho do arquivo .jasper da aplicação
        InputStream reportStream = context.getExternalContext().getResourceAsStream("/reporter/etiquetas/EtiquetaEndereco.jasper");

        //envia a resposta com o MIME Type PDF
        response.setContentType("application/pdf");
        /*for�a a abertura de download
        response.setHeader("Content-disposition",
        "attachment;filename=relatorio.pdf");
         */
        try {
            ServletOutputStream servletOutputStream = response.getOutputStream();

            //envia o título para o relatório, usando o parâmetro criado
            Map<String, String> parametros = new HashMap<String, String>();
            parametros.put("fornecimento", "xxxx");

            List dados = new ArrayList();

            Map record = null;
          
            //varre a consulta e separa os objetos

            for (Iterator iterator = todosResultsPesq().iterator();
                    iterator.hasNext();) {

                Object[] o = (Object[]) iterator.next();
                record = new HashMap();
                //coloca em um Map cada um dos campos criados
                //manualmente pelo relatório

                record.put("fornecimento", o[0].toString());
                record.put("isrisco", Boolean.parseBoolean(o[1].toString()));
                record.put("endereco_entrega", o[2].toString());
                record.put("nome_cliente", o[3].toString());
                record.put("endereco", o[4].toString());
                record.put("bairro", o[5].toString());
                record.put("cidade", o[6].toString());
                record.put("cep", o[7].toString());
                record.put("observacao_entrega", o[8].toString());
                record.put("num_notafiscal", Integer.parseInt(o[9].toString()));
                record.put("data_nf", this.convertTimestamp(o[10].toString()));

                //adiciona o List dados
                dados.add(record);

            }

                //cria uma fonte de dados para cole��es
                JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);

                //envia para o navegador o PDF gerado
                JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream,parametros,fonteDados);

                servletOutputStream.flush();
                servletOutputStream.close();

            } catch  (JRException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            //evita erro do JSF após completar
            //a geração do relatório
            //avisando o FacesContext que a resposta está completa
            context.responseComplete();

        }
    }

Obrigado

Victor

Andrei Hirata
   - 29 out 2009

Não entendi exatamente oque vc quer.mas pelo que entendi vc quer algo assim..

Toda vez que o usuario usar o sistema para pesquizar algo com o codigo de barras,deve ficar focalizado sempre no seu input para que assim as pesquisas sejam feitas

Neste caso a logica seria assim

jTextField.requestFocus(); //aqui ele força o focus no seu componente

if querybusca encontrou valor
pega valor e adiciona na grid
jTextField.requestFocus(); //focaliza o focus para outra consulta

é isto que vc quer?um comando para forçar o focus para sempre fazer busca?

OBS:vc deve usar um if assim tambem

se o jtextfield for vazio entao
nao faca nada

SE nao tiver isto, quando vc tentar finalizar a venda toda hora vai ficar focando no seu jtext

estou dando uma logica funcinal e simples.se nao entender eu posto um codigo para vc

0
|
0

Victor Lima
   - 29 out 2009

Boa Tarde Andrei Inoue Hirata,

 Sim , exatamente, eu quero que ao sair do inputText ele executar a funcao executarEtiqueta()
e retornar ao inputText.

 Tentei de varias maneiras e consegui de uma forma usando o codigo anterior para dar o focus so que quando renderiza depois de um submit o campo perde o foco, sendo que ele deve ficar ali até que o usuario esteje utilizando.

tentei fazer isso mas tambem nao deu certo :

<h:outputText  styleClass="rich-label" value="Entre com os dados:" />
                        <h:inputText  label="Dados" size="15"  id="meuInput"  required="true" value="#{etiquetasController.num_notafiscal}"
                        class="meuInput" reRender="etiquetas" onblur="linkimprime.click();submit();" >
                             <h:commandButton id="linkimprime" value="Imprimir" action="#{etiquetasController.executarEtiqueta}" />

no evento onblur ele chamaria um link que tem uma action que imprime o relatório , mas nao da certo.

 Eu fiz esse sistema no delphi, com um EditText, que no evento onExit ele busca os dados e executa o relatório para impressora. e depois dou  EditText.SetFocus; e pronto retorna ao campo selecionando.

 O que nao sei sao as regras para utilizar isso na WEB com jsf.

 Valeuu pela força no aguardo.

Victor

0
|
0

Andrei Hirata
   - 29 out 2009

Então amigo eu vou facilitar seu trabalho.. Toda vez que a pessoa clicar no BOTAO INSERIR VALOR. Adicione o valor em uma lista. Assim atualize sua tabela,se usar ajax = comando reRender..algo assim quando o usuario for adicionar o mesmo valor..E agora oq devo fazer?   SIMPLES..   pegue o valor digitado percorra a lista e veja se este valor é igual, se for igual vc incrimenta o valor..SE posse produto,vc incrementaria a quantidade ouuu se for igual vc nao deixa fazer nada..       VEJA QUE É MAIS FACIL TRABALHAR COM LISTA.ISTO SERVE PARA DATA MODEL..VOU TE PASSAR UM EXEMPLO BABA DA LISTA.Eu acho que ligar uma tabela em jsf com a lista vc ja sabe ne? NA DUVIDA>>.   rich:dataTable rowClasses="classOne,classTwo"
                                id = "tblLocais"
                                rows = "10"
                                columnClasses="col"
                                value="#{listaBean.adicionado}"
                                var='item'
                                border="1"
                                cellpadding="2"
                                cellspacing="0">                     <f:facet name="header">
                        <h:outputText value="#{msg.langTblLocais}"/>
                    </f:facet>   aee a sua lista.Aqui exemplo de percorrer.       List lista = new ArrayList();  
... preencha a lista com seus objetos;  
for (Iterator iterator = lista.iterator(); iterator.hasNext(); ) {  
    SuaClasse obj = (SuaClasse) iterator.next();  
    System.out.println (obj.x1 + "," + obj.x2);  
}  OU EXEMPLO List<Pessoa> ps = new ArrayList<Pessoa>();
ps.add(new Pessoa("Maria 1.5"));
for (Pessoa p : ps)
  System.out.println(p.getNome());     assim seu codigo seria   List<Pessoa> ps = new ArrayList<Pessoa>();
for (Pessoa p : ps)
if ValorCapturadoNoJedit ==p.codigo { faca algo } else { faca nada }
  DEU PARA ENTENDER?  
 

0
|
0

Andrei Hirata
   - 29 out 2009

ignorar  A SOLUÇÃO ABAIXO...ERA A RESPOSTA PARA OUTRO FORUM

0
|
0

Andrei Hirata
   - 29 out 2009

Ñão sei se isto funciona..Mas antes de dar uma solução mais complexa....

Quando vc da um <h:commandButton  este comando faz uma solicitação para o servidor e atualiza a tela.é como se fosse um submit e por isto ao atualizar a tela, a função de focalizar é perdido mesmo. Oque vc poderia fzer é usar um ajax.vc tem o richfaces instalado? o <a4j:commandButton poderia resolver seu problema.ESTOU CHUTANDO>'so tentando. Se não der eu tenho mais uma solução.

0
|
0

Victor Lima
   - 29 out 2009

Boa Tarde,

 Veja se te explico melhor:

 Na tela que printei, tem uns controles radio button e combobox,  e um inputText do JSF.

 Quando defino os controles posiciono o cursor no inputText e com um Leitor de Codigo de Barra começo a ler os codigos dentro deste campo.

 O formulário é submetido quando o cursor sai do campo. onblur a pesquisa é realizada com sucesso, veja a tela printada e o codigo:

     <h:outputText  styleClass="rich-label" value="Entre com os dados:" />
                        <h:inputText  label="Dados" size="15" name="meuInput"  id="meuInput"  required="true" value="#{etiquetasController.num_notafiscal}"
                         classes="meuInput" onblur="javascript:mantemFocus();submit();"  >
                        <a4j:support event="onblur" action="#{etiquetasController.executarEtiqueta}" reRender="etiquetas" ajaxSingle="true" />
                            <f:validateLength minimum="6" maximum="15" />

                        </h:inputText>

 
  Destaquei o firebug para voce ver que eu preciso apos submeter a pesquisa voltar ao campo, porque o usuario irá realizar outra pesquisa em intervalos curtos, um atraz do outro.

 E o mais importante é que ele realiza a pesquisa e preciso enviar para impressora o relatório, mas nao tenho ideia de como fazer isso sem um botão, preciso fazer isso como um evento ao sair do campo.

Veja meu console esta pesquisando normalmente:

29/10/2009 16:56:45 com.sun.faces.renderkit.html_basic.HtmlBasicRenderer getForComponent
WARNING: Unable to find component with ID filter in view.
Hibernate:
    select
        pedidos1_.fornecimento as col_0_0_,
        pedidos1_.isrisco as col_1_0_,
        cliente0_.endereco_entrega as col_2_0_,
        cliente0_.nome_cli as col_3_0_,
        cliente0_.logradouro as col_4_0_,
        cliente0_.bairro as col_5_0_,
        cliente0_.cidade as col_6_0_,
        cliente0_.cep as col_7_0_,
        pedidos1_.obs_entrega as col_8_0_,
        notas2_.notafiscal as col_9_0_,
        notas2_.data_cria as col_10_0_
    from
        public.cliente cliente0_
    inner join
        public.pedido pedidos1_
            on cliente0_.cod_cli=pedidos1_.cod_cli
    inner join
        public.nota_fiscal notas2_
            on cliente0_.cod_cli=notas2_.cod_cli
    where
        notas2_.notafiscal=?
16:56:45,410 DEBUG IntegerType:133 - binding '596089' to parameter: 1
16:56:45,412 DEBUG StringType:172 - returning '8707912417' as column: col_0_0_
16:56:45,412 DEBUG BooleanType:172 - returning 'true' as column: col_1_0_
16:56:45,413 DEBUG StringType:172 - returning 'RUA JOAO DE OLIVEIRA SOARES n � 241 apt 202  JARDIM CAMBURI  VITORIA  ES  CEP 29090390' as column: col_2_0_
16:56:45,413 DEBUG StringType:172 - returning 'Odarlindo Alberto Plaster' as column: col_3_0_
16:56:45,413 DEBUG StringType:172 - returning 'RUA JOAO DE OLIVEIRA SOARES n� 241 241' as column: col_4_0_
16:56:45,416 DEBUG StringType:172 - returning 'JARDIM CAMBURI' as column: col_5_0_
16:56:45,416 DEBUG StringType:172 - returning 'VITORIA' as column: col_6_0_
16:56:45,417 DEBUG StringType:172 - returning '29090390' as column: col_7_0_
16:56:45,417 DEBUG StringType:172 - returning 'LV' as column: col_8_0_
16:56:45,418 DEBUG IntegerType:172 - returning '596089' as column: col_9_0_
16:56:45,418 DEBUG DateType:172 - returning '01 Setembro 2009' as column: col_10_0_

E outro problema é que se utilizo um botao para imprimir a pagina fica em branco e perde a sessao.

voce acha que isso é possivel ?

obrigado pela ajuda

Victor

0
|
0

Andrei Hirata
   - 29 out 2009

Respondendo sua duvida sobre Ao sair do campo executa algo...   <input type="text" onblur="your_function()" name=...>
Agora  to vendo seu codigo com mais atenção.o complicado é q aqui neste forum não tem aquele sistema de formatação de código e ae atrapalha no entendimento.

0
|
0

Andrei Hirata
   - 29 out 2009

Isto aqui pode resolver seu problema de retornar ao edit apos impressao   <h:form id="myform">
        <h:panelGrid columns="2">
            <h:inputText id="myinput" value="#{userBean.name}">
                <a4j:support event="onkeyup" reRender="myform" focus="myinput"/>
            </h:inputText>
            <h:outputText id="outtext" value="#{userBean.name}" />
        </h:panelGrid>
 </h:form>

0
|
0

Andrei Hirata
   - 29 out 2009

e sobre istoo   E outro problema é que se utilizo um botao para imprimir a pagina fica em branco e perde a sessao.

voce acha que isso é possivel ?   ------------------------------------   Preciso saber do processo da impressao.Ou seja...os processos do clicar até a impressão..

0
|
0

Victor Lima
   - 29 out 2009

Boa tarde,

 Eu dei exemplo de um botao mas na verdade preciso utilizar no evento onblur, quando perde o foco.

 Realizei os testes com sua utlima resposta utilizando

<a4j:support event="onkeyup" action="#{etiquetasController.executarEtiqueta}" reRender="etiquetas,etiqueta" ajaxSingle="true" focus="meuinput" />

 ele so nao renderiza o grid para visualizar a pesquisa mas imprime duas vezes o mesmo relatório.

 a funcao que chama o relatório esta abaixo. e coloquei ela na action do  <a4j:support .

 

   @SuppressWarnings("unchecked")
   //executa o relatório através do actionListener
    public void executarEtiqueta() throws java.text.ParseException, IOException, ParseException {

        this.todosResultsPesq();
      

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

        //pega o caminho do arquivo .jasper da aplicação
        InputStream reportStream = context.getExternalContext().getResourceAsStream("/reporter/etiquetas/EtiquetaEndereco.jasper");

        //envia a resposta com o MIME Type PDF
      //  response.setContentType("application/pdf");
        /*for�a a abertura de download
        response.setHeader("Content-disposition",
        "attachment;filename=relatorio.pdf");
         */
        try {
            ServletOutputStream servletOutputStream = response.getOutputStream();

            //envia o título para o relatório, usando o parâmetro criado
            Map<String, String> parametros = new HashMap<String, String>();
            parametros.put("fornecimento", "xxxx");

            List dados = new ArrayList();

            Map record = null;
          
            //varre a consulta e separa os objetos

            for (Iterator iterator = todosResultsPesq().iterator();
                    iterator.hasNext();) {

                Object[] o = (Object[]) iterator.next();
                record = new HashMap();
                //coloca em um Map cada um dos campos criados
                //manualmente pelo relatório

                record.put("fornecimento", o[0].toString());
                record.put("isrisco", Boolean.parseBoolean(o[1].toString()));
                record.put("endereco_entrega", o[2].toString());
                record.put("nome_cliente", o[3].toString());
                record.put("endereco", o[4].toString());
                record.put("bairro", o[5].toString());
                record.put("cidade", o[6].toString());
                record.put("cep", o[7].toString());
                record.put("observacao_entrega", o[8].toString());
                record.put("num_notafiscal", Integer.parseInt(o[9].toString()));
                record.put("data_nf", this.convertTimestamp(o[10].toString()));

                //adiciona o List dados
                dados.add(record);

            }

                //cria uma fonte de dados para cole��es
                JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);

                //envia para o navegador o PDF gerado
           //     JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream,parametros,fonteDados);

                JasperPrint print = JasperFillManager.fillReport(reportStream, parametros, fonteDados);

                JasperPrintManager.printPage(print, 0, false);

                servletOutputStream.flush();
                servletOutputStream.close();

            } catch  (JRException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            //evita erro do JSF após completar
            //a geração do relatório
            //avisando o FacesContext que a resposta está completa
            context.responseComplete();

        }
    }

0
|
0

Victor Lima
   - 29 out 2009

vou postar todo codigo da tela.

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:c="http://java.sun.com/jstl/core"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">

                         <script language="javascript">
                         function foco()
                           {
                              this.document.getElementById('meuinput').focus();
                           }

                         </script>
     <body onload="javascript:foco();" >
        <ui:composition template="../layouts/template.xhtml">
            <ui:define name="content">

             

                <rich:panel style="width:800px;height:300px">
                    <f:facet name="header">
                        <h:outputText value="Impressão de Etiquetas"/>
                    </f:facet>

                    <h:form id="etiqueta">
                        <h:panelGrid columns="3">
                            <h:outputText  styleClass="rich-label" value="Tipo de Etiqueta" />
                            <rich:comboBox  size="2" label="Tipo de Etiqueta" defaultLabel="Selecione a Etiqueta" id="etiqueta" required="false" value="">
                                <f:selectItem itemValue="Endereçamento"/>
                                <f:selectItem itemValue="Simples"/>
                                <f:validateLength minimum="4" maximum="30" />
                            </rich:comboBox>

                            <h:selectOneRadio styleClass="rich-label">

                                <f:selectItem itemLabel="Numero de Nota Fiscal" itemValue="nota"/>
                                <f:selectItem itemLabel="Numero do Pedido" itemValue="pedido"/>
                                <a4j:support event="onclick" reRender="tipo"/>

                            </h:selectOneRadio>
                        </h:panelGrid>

                        <h:outputText  styleClass="rich-label" value="Entre com os dados:" />
                        <h:inputText  label="Dados" size="15" name="meuInput"  id="meuinput"  required="true" value="#{etiquetasController.num_notafiscal}"
                         classes="meuinput" onblur="javascript:mantemFocus();submit();"  >
                        <a4j:support event="onblur" action="#{etiquetasController.executarEtiqueta}" reRender="etiquetas,etiqueta" ajaxSingle="true" focus="meuinput" />
                            <f:validateLength minimum="6" maximum="15" />

                        </h:inputText>
                       
                        <br/>
                        <br/>
                        <br/>
                        <br/>
                        <c:if test="${not empty etiquetasController.num_notafiscal}">
                            <br />
                            <rich:dataTable  id="etiquetas" rendered="true"  var="item" value="#{etiquetasController.etiquetas}" style="width:400px">

                                <rich:column id="numped">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Fornecimento" /></f:facet>
                                    <h:outputText value="#{item[0]}"  />
                                </rich:column>

                                <rich:column id="nota">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Nota Fiscal" /></f:facet>
                                    <h:outputText value="#{item[9]}"  />
                                </rich:column>

                                <rich:column id="datanota">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Data Nota" /></f:facet>
                                    <h:outputText value="#{item[10]}">
                                        <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"/>
                                    </h:outputText>
                                </rich:column>

                                <rich:column id="nome">
                                    <f:facet name="header"><h:outputText styleClass="headerText" value="Nome Cliente" /></f:facet>
                                    <h:outputText value="#{item[3]}"/>
                                </rich:column>

                            </rich:dataTable>

                        </c:if>
                    </h:form>
                </rich:panel>
              
            </ui:define>
        </ui:composition>
     </body>
</html>

0
|
0

Andrei Hirata
   - 29 out 2009

 ele so nao renderiza o grid para visualizar a pesquisa mas imprime duas vezes o mesmo relatório.

Sobre o informado....
para resolver o problema da grid é easy

TODOS EVENTOS USANDO BOTAO AJAX QUANDO TIVER RELACIONADO COM UMA TABLE OU GRID DEVE USAR reRender.Segue um exemplo de um programa que fiz

 <a4j:commandLink id="excluirRegistro"
                                       action="#{tiposLocaisC.excluir}"
                                       reRender="tblTiposLocais"
                                       >

Imprimir duas vezes?Opaaaaa....ae vc precisa compilar e me mostrar porq ta entrando duas vezes na funcao imprimir..

Faz o favor me manda um email destas telas e codigo q vc postou em um arquivo word.que vejo para vc mais tarde.olhar este codigo por aqui é muito ruim..
APROVEITANDO VOU POSTAR UM TOPICO E VOU PEDIR UMA AJUDA TAMBEM

0
|
0

Victor Lima
   - 29 out 2009

ok Valeu a força.

obrigado

Victor

0
|
0

Andrei Hirata
   - 29 out 2009

http://www.devmedia.com.br/forum/viewtopic.asp?id=10798
Por favor vc entende disto?

0
|
0

Victor Lima
   - 29 out 2009

Nao tenho ideia rsrsrs.

0
|
0

Andrei Hirata
   - 29 out 2009

valeu mesmo assim:> . qualquer duvida estamos por ae.E aproveitando.quais as tecnlogias envolvidas no seu projeto?
Exemplo:jsf,hibernate,ejb3,richfaces e blabla

0
|
0

Victor Lima
   - 29 out 2009

No meu projeto, tenho.

 JSF, RichFaces , Hibernate , JPA e Spring.

 so esses.

 Construi o sistema do 0, mas estou agarrado em alguns detalhes para terminar.

 valeuu ai.

  eu consegui foca no campo. agora so falta imprimir. Ta dando um erro no actionListener. Está pesquisando ao sair do campo. o foco volta para o campo, mas nao imprime nada.

olha o codigo:

<h:outputText  styleClass="rich-label" value="Entre com os dados:" />
 <h:inputText  label="Dados" size="15" name="meuInput"  id="meuinput"  actionChangeListener="" required="true" value="#{etiquetasController.num_notafiscal}" classes="meuinput" event="onblur" >
<a4j:support event="onblur"  actionListener="#{etiquetasController.executarEtiqueta}" imediate="true"  focus="meuinput" reRender="etiquetas,etiqueta" ajaxSingle="true"  />
<f:validateLength minimum="6" maximum="15" />
</h:inputText>

O engraçado que se eu tiro esse codigo actionListener="#{etiquetasController.executarEtiqueta}" , passa a nao funcionar e é ele que chama o relatório, que nao sai.

valeu a força

Victor

0
|
0

Andrei Hirata
   - 29 out 2009

Pelo que to entendendo.Como o ajax não da um submit,é provavel que a funcao do relatorio  esta sendo chamada  para se imprimir o relatorio MAS nao consegue mandar estes dados para serem processados.Faça um teste.Volte para a opcao SEM USAR AJAX E VE OQ ACONTECE.Se funcionar é isto mesmo.

Agora como arrumar isto.olhamos isto depois

EM RELACAO AO SEU ACTION LISTENER É O SEGUINTE

  public String updateRitos(ActionEvent event){//VEJA QUE ESTA FUNCAO É DO TIPO ACTIONEVENT
         int index = getbuscarListaRitos().indexOf(ritos);//aqui executa oq vc quer
         facade.update(ritos);
         return "sucessoRitos";

    }

A FUNCAO QUE VC VAI CHAMAR USANDO ACTIONLISTENER DEVE SER DO TIPO ACTIONEVENT

se nao for nunca vai funcionar mesmo COM AJAX

0
|
0

Victor Lima
   - 09 nov 2009

favor fechar chamado

atenciosamente

VIctor

0
|
0