Ajuda com JSF

8 respostas
joaosavio

Seguinte pessoal eu fiz uma aplicacao web de cadastros usando a mesma logica de uma outra desktop que havia feito.

O login ta tudo ok e a navegacao pelas paginas tb, so que algumas coisas nao estao funcionando.

O contador i so incrementa uma vez (clicando em proximo na 1ª vez, na 2ª nao acontece nada) e nao decrementa quando clico em anterior.

Outra coisa estranha é que se eu clico no botao ultimo (esse funciona) e depois no botao proximo, o i decrementa!

Tb nao da pra salvar, depois que clico nao mudou nada.

O detalhe é que toda essa logica funciona na minha outra aplicacao, que é desktop!

Já olhei o bd e ta tudo certo, nao sei mais o q fazer

Espero que possam ajudar

Abraços

[b]Classe Cadastros[/b]
//...
    private CadastrosVO cadVO;
    private List<CadastrosVO> lista;
    private int i = 0;
    private int salvar;
    private DAOFactory dao;

    public Cadastros() {
        dao = new DAOFactory();
        lista = getLista();
        if (!lista.isEmpty()) {
            cadVO = lista.get(i);
            mostraDados();                                  
        }
        
        botao_gravar.setDisabled(true);
        
    }

 private List<CadastrosVO> getLista() {
        return dao.getCadastrosDAO().listaTudo();
    }
        
    public void mostraDados() { funciona
        teste.setValue("i= "+i); // estou testando o contador i
        tf_nome.setValue(cadVO.getNome());
        ftf_data.setValue(cadVO.getData());
    }

    public String botao_anterior_action() { //nao funciona
        if (i > 0 && !lista.isEmpty()) { //se eu tirar a condicao dá erro no server
            i--; // o i nao decrementa                                   
            cadVO = lista.get(i);
            mostraDados();  
                            
        }
        botao_gravar.setDisabled(true);
        return null;
    }
    
   
    public String botao_proximo_action() { //vide descricao
        if (i < lista.size()-1 && !lista.isEmpty()) {
            i++;
            cadVO = lista.get(i);
            mostraDados();  
                                  
        }
        botao_gravar.setDisabled(true);
        return null;
    }
    
    public String botao_ultimo_action() { // funciona
        if (!lista.isEmpty()) {
            i = lista.size() - 1;
            cadVO = lista.get(i);
            mostraDados();  
                                  
        }
        botao_gravar.setDisabled(true);
        return null;
    }
    
    
    public String botao_novo_action() { // funciona
        
        mostraNada(); // mostra tudo ""
        salvar = 1;
        botao_gravar.setDisabled(false);
        teste.setValue("salvar = "+salvar);
        return null;
    }

   
    public String botao_alterar_action() { //funciona
        salvar = 2;
        teste.setValue("salvar = "+salvar);
        botao_gravar.setDisabled(false);
        return null;
    }

    
       
    public String botao_gravar_action() { //nao funciona
        
        if (salvar == 1) {
            lista.add(getCadVO(true));
                
            dao.beginTransaction();
            dao.getCadastrosDAO().adiciona(lista.get(lista.size()-1));
            dao.commit(); 
        }                 
        if (salvar == 2) {
            lista.set(i, getCadVO(false));
                       
            dao.beginTransaction();
            dao.getCadastrosDAO().atualiza(lista.get(i));
            dao.commit(); 
                              
        }
               
        lista = getLista();
        i = 0;
            
        if (!lista.isEmpty()) {
            cadVO = lista.get(i);
            mostraDados();  
        } else {
            mostraNada(); // mostra tudo ""
        } 

        return null;
    }

8 Respostas

Javabuntu

mostra o código da página jsf ai…fica + fácil.

joaosavio

é isso que tu pediu?

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
    Document   : Cadastros
    Created on : 19/02/2008, 12:56:53
    Author     : joaosavio
-->
<jsp:root version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:webuijsf="http://www.sun.com/webui/webuijsf">
    <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
    <f:view>
        <webuijsf:page binding="#{Cadastros.page1}" id="page1">
            <webuijsf:html binding="#{Cadastros.html1}" id="html1">
                <webuijsf:head binding="#{Cadastros.head1}" id="head1">
                    <webuijsf:link binding="#{Cadastros.link1}" id="link1" url="/resources/stylesheet.css"/>
                </webuijsf:head>
                <webuijsf:body binding="#{Cadastros.body1}" id="body1" style="-rave-layout: grid">
                    <webuijsf:form binding="#{Cadastros.form1}" id="form1">
                        <div style="left: 0px; top: 0px; position: absolute">
                            <jsp:directive.include file="Cabecalho.jspf"/>
                        </div>
                        <div style="left: 0px; top: 96px; position: absolute">
                            <jsp:directive.include file="Menu.jspf"/>
                        </div>
                        <webuijsf:tabSet binding="#{Cadastros.tabSet1}" id="tabSet1" selected="tab1" style="border-width: 1px; border-style: inset; height: 190px; left: 144px; top: 120px; position: absolute; width: 646px">
                            <webuijsf:tab binding="#{Cadastros.tab1}" id="tab1" text="Dados">
                                <webuijsf:panelLayout binding="#{Cadastros.layoutPanel1}" id="layoutPanel1" style="height: 178px; position: relative; width: 647px; -rave-layout: grid">
                                    <webuijsf:label binding="#{Cadastros.label1}" id="label1" style="position: absolute; left: 24px; top: 24px" text="Pesquisar:"/>
                                    <h:inputText binding="#{Cadastros.tf_pesquisa}" id="tf_pesquisa" style="position: absolute; left: 96px; top: 24px" title="tf_pesquisa"/>
                                    <h:commandButton action="#{Cadastros.botao_pesquisa_action}" binding="#{Cadastros.botao_pesquisa}" id="botao_pesquisa"
                                        style="left: 240px; top: 24px; position: absolute; width: 48px" value="OK"/>
                                    <h:inputText binding="#{Cadastros.tf_nome}" id="tf_nome" style="left: 72px; top: 72px; position: absolute; width: 240px" title="tf_nome"/>
                                    <h:inputText binding="#{Cadastros.ftf_data}" id="ftf_data" style="left: 456px; top: 72px; position: absolute" title="ftf_data"/>
                                    <webuijsf:label binding="#{Cadastros.label2}" id="label2" style="position: absolute; left: 24px; top: 72px" text="Nome:"/>
                                    <webuijsf:label binding="#{Cadastros.label3}" id="label3" style="left: 336px; top: 72px; position: absolute" text="Data de Nascimento:"/>
                                    <h:inputText binding="#{Cadastros.teste}" id="teste" style="position: absolute; left: 72px; top: 120px" title="teste"/>
                                </webuijsf:panelLayout>
                            </webuijsf:tab>
                            <webuijsf:tab actionExpression="#{Cadastros.tab2_action}" binding="#{Cadastros.tab2}" id="tab2" text="Comentários">
                                <webuijsf:panelLayout binding="#{Cadastros.layoutPanel2}" id="layoutPanel2" style="width: 100%; height: 128px;"/>
                            </webuijsf:tab>
                        </webuijsf:tabSet>
                        <webuijsf:button actionExpression="#{Cadastros.botao_primeiro_action}" binding="#{Cadastros.botao_primeiro}" id="botao_primeiro"
                            style="border-width: 1px; border-style: solid; height: 24px; left: 143px; top: 336px; position: absolute; width: 71px" text="Primeiro"/>
                        <webuijsf:button actionExpression="#{Cadastros.botao_proximo_action}" binding="#{Cadastros.botao_proximo}" id="botao_proximo"
                            style="border-width: 1px; border-style: solid; height: 24px; left: 287px; top: 336px; position: absolute; width: 72px" text="Próximo"/>
                        <webuijsf:button actionExpression="#{Cadastros.botao_ultimo_action}" binding="#{Cadastros.botao_ultimo}" id="botao_ultimo"
                            style="border-width: 1px; border-style: solid; height: 24px; left: 359px; top: 336px; position: absolute; width: 72px" text="Último"/>
                        <webuijsf:button actionExpression="#{Cadastros.botao_anterior_action}" binding="#{Cadastros.botao_anterior}" id="botao_anterior"
                            style="height: 24px; left: 215px; top: 336px; position: absolute; width: 71px" text="Anterior"/>
                        <webuijsf:button actionExpression="#{Cadastros.botao_novo_action}" binding="#{Cadastros.botao_novo}" id="botao_novo"
                            style="height: 24px; left: 455px; top: 336px; position: absolute; width: 71px" text="Novo"/>
                        <webuijsf:button actionExpression="#{Cadastros.botao_alterar_action}" binding="#{Cadastros.botao_alterar}" id="botao_alterar"
                            style="height: 24px; left: 527px; top: 336px; position: absolute; width: 71px" text="Alterar"/>
                        <webuijsf:button actionExpression="#{Cadastros.botao_deletar_action}" binding="#{Cadastros.botao_deletar}" id="botao_deletar"
                            style="height: 24px; left: 599px; top: 336px; position: absolute; width: 72px" text="Deletar"/>
                        <webuijsf:button actionExpression="#{Cadastros.botao_gravar_action}" binding="#{Cadastros.botao_gravar}" id="botao_gravar"
                            style="height: 24px; left: 719px; top: 336px; position: absolute; width: 72px" text="Salvar"/>
                    </webuijsf:form>
                </webuijsf:body>
            </webuijsf:html>
        </webuijsf:page>
    </f:view>
</jsp:root>
joaosavio

up

joaosavio

up

maurenginaldo

O que vc está querendo é fazer uma navegação entre os cadastros?

joaosavio

exatamente

maurenginaldo

Dê uma olhada nessa biblioteca, acho que resolve seu problema.

http://livedemo.exadel.com/richfaces-demo/richfaces/dataTableScroller.jsf?c=dataTableScroller

ranieripieper

gostaria de saber de alguém já teve que mostrar na mesma página vários datatables e datatablescroller. Digo vários pois dependende de uma lista.
Tenho a seguinte estrutura:
Objeto 1 possui uma lista de Objeto 2 e esse Objeto 2 possui uma lista de Objeto 3

De forma resumida fiz da seguinte maneira:

<rich:dataGrid value="#{bean.objeto1.listObjeto2}" var="obj2">
    .....
    <a4j:form>
      <rich:dataTable rows="10" value="#{obj2.listObj3}" var="obj3">
          <f:facet name="footer">
		<rich:datascroller />
  	 </f:facet>
         .....
      </rich:dataTable>
    </a4j:form>
</rich:dataGrid>

O problema q acontece é:
Suponha que o tamanho da lista listObj3 é 3. Portanto, tenho 3 paginadores.
Abro a tela e todos estão na pagina 1, clico para que o “primeiro paginador” vá para a página 2. Nesse momento tudo parece normal, o problema é que esta paginação influencia nos outros paginadores. Ou seja, se nesse momento eu clicar no next do segundo paginador, ele irá para a página 3. E nesse momento em qualquer paginador que eu clicar no next, vai para a página 4. Ou seja, os paginadores na verdade são considerados somente 1.
Vi no html gerado, e ele gera o mesmo id para os componentes.
Já tentei colocar id no form ou dataTable mas não tem como, pois tem que ser um id dinamico. E o atributo id não aceita por exemplo: #{obj2.idObj}

Alguém tem alguma luz ?


Criado 2 de março de 2008
Ultima resposta 12 de mar. de 2008
Respostas 8
Participantes 4