Classe + JavaBen

3 respostas
P
Ola me deêm uma luzqualquer ajuda e bem vinda





Eu tenho um Bean chamado PedidosBean.java que possui um instância de uma classe chamada medicamentos.java.








public class PedidosBean extends Pedidos{


    


    cidim.Medicamentos medPed   = new cidim.Medicamentos();














Possuou tbm uma página jsp , chamada "RealizaPedido.jsp" que possue uma instância do Bean Pedidosbean.java com id = "Pedidos".





    <jsp:useBean id="Pedido" scope="session" class="cidim.PedidosBean" />





–>Quando tento chamar um método da classe "Medicamentos" na página jsp  como a seguir:





        Pedido.setNomeMed(request.getParameter("nome_med"));





                   ele não reconhece os metodos da classe medicamentos, só os proprios da classe "Pedidos" que  PedidosBean está extendendo…


                   porque não consigo ver as propriedades e os metodos da classe medicamentos???





já se eu fizer:





    <jsp:useBean id="Med" scope="session" class="cidim.Medicamentos" />





daí eu consigo acessar normalmente…mas gostaria de saber porque nao consigo acessar diretamente só instanciando em minha página jsp o PedidosBean ???








------------------------------------------------------------------


E se eu acabasse por fazer da segunda forma , onde eu conseguiria enxergar os metodos e propriedades q eu gostaria…





 <jsp:useBean id="Med" scope="session" class="cidim.Medicamentos" />





quando eu fosse executar um metodo contido dentro do PedidosBean , que possuisse  por exemplo : "getNomeMed()";





ele iria pegar o nome do medicamento , mesmo tendo uma instancia em uma página jsp e outra em PedidosBean ???ou seja com a instancia feita na página jsp , e executando um metodo do PedidosBean , que contesse propriedades da classe medicamentos , o valor nao seria nulo??? ele iria pegar os valores???








Desculpe se ficou confuso , tentei ser bem claro…





Obrigado pela ajuda de vcs…





------------------------------------------





eis os códigos relativos:





------------------------------------------





Pedido.jsp





<jsp:useBean id="Pedido" scope="session" class="cidim.PedidosBean" />





<%


   Pedido.setCod_ped(request.getParameter("medicamento"));


   Pedido. queria que aparecesse aqui  os set´s da classe medicamentos…














public class PedidosBean extends Pedidos{





//Declarações Públicas - Membros da Classes-------------------------------------





  cidim.Medicamentos medPed   = new cidim.Medicamentos();








um metodo do Bean :





 public boolean Grava_Pedido(String dta){


     try{


        String SQL_gravaped="Insert into pedido values ("+ this.getCod_ped()+","+this.assocPed.getCod_assoc()+


                            ",´"+this.getData_ped()+"´,´"+this.getHora_ped()+"´,´"+this.getStatus_ped()+


                            "´,"+this.fornPed.getCod_forn()+","+this.funcPed.getCod_func()+


                            ",´"+this.getTot_ped()+"´);";





       ---------------> Alguns destas propriedades sao da classe Medicamentos…e eu precisaria utilizar os Set´s deles para colocar valores nas variaveis …para poder utilizar os GEt´s aqui…











        int Grava_Ped=ST_gravaped.executeUpdate("");


        return(true);





      }catch(Exception e){


         this.setInfo("Erro na gravação do Pedido em : Grava_Pedido()"+e.getMessage()+e.toString());


         return(false);


       }


   }





-------------------








Muito Obrigado








Felipe!

3 Respostas

G
Olá!


para acessar os dados do objeto Medicamentos em seu pedido, declare


medPed public.


public cidim.Medicamentos medPed = new cidim.Medicamentos();





Para setar os dados, use


Pedido.medPed.setNomeMed(request.getParameter("nome_med"));





Existem outras formas de solucionar o problema, mas essa eh a mais simples





[]s
P

putz cara se eu lhe contar q eu pensei nisso , mas achei que era errado fazer assim…

valeu vou tentar…qualquer coisa eu retorno…



Obrigado!

B
A idéia é basicamente essa mesmo, porém não é uma boa prática de programação deixar suas variáveis public. Para um bom encapsulamente, elas devem ser private e deve haver um método para get e set





Então você criaria um método assim:





public cidim.Medicamentos getMedPed() {


    return  medPed;


}





e  faria Pedido.getMedPed().setNomeMed(request.getParameter("nome_med"));
Criado 4 de março de 2003
Ultima resposta 4 de mar. de 2003
Respostas 3
Participantes 3