(passo já feito com sucesso para o FornecedorHandler), dá o erro:
Caanot convert #{requestScope.sessao{ of type class java.lang.String to interface org.hibernate.Session
Como dito, este mesmo passo foi executado para o FornecedroHandler e funcionou. Sem este managed-bean, a aplicação passa desta fase sem erro - dá um outro erro posterior mas que deve ser porque eu retirei esta parte do XML.
Eu bem poderia ler a apostila só para identificar o exercício que vc está tentando implementar
e então poder ajuda-lo mas, kra na boa, eu não vou fazer isso não. De fato me parece que o
erro não está no seu faces-config.xml mas sim na sua classe fj26.COntaPagarHandler.
Se vc puder postar algum código extra eu posso tentar localizar o erro.
LPJava
mude se request para session scope do seu seu managed-bean.
C
cmendes
Olá, bom dia. Mudei para session porém o erro persistiu. Segue mais código:
ContaPagarHandler
publicclassContaPagarHandler{privateContaPagarcontaPagar=newContaPagar();//private List<ContaPagar> contas = new ArrayList<ContaPagar>();//private long count = 0L;privateHtmlSelectOneMenufornecedorSelecionado;privateDao<ContaPagar>contaPagarDao;privateDao<Fornecedor>fornecedorDao;publicvoidsetSessao(Sessionsession){this.contaPagarDao=newDao<ContaPagar>(session,ContaPagar.class);this.fornecedorDao=newDao<Fornecedor>(session,Fornecedor.class);}privateFornecedorHandlerpegaFornecedorHandler(){FacesContextfacesContext=FacesContext.getCurrentInstance();ELContextelContext=facesContext.getELContext();ELResolverresolver=facesContext.getApplication().getELResolver();Objectfh=resolver.getValue(elContext,null,"fornecedorHandler");return(FornecedorHandler)fh;}publicList<SelectItem>getFornecedoresParaComboBox(){List<Fornecedor>fornecedores=this.fornecedorDao.list();List<SelectItem>lista=newArrayList<SelectItem>();//FornecedorHandler handler = pegaFornecedorHandler();for(Fornecedorf:fornecedores){lista.add(newSelectItem(f.getId(),f.getNome()));}returnlista;}publicStringsalva(ActionEventevent){System.out.println("gravando conta: "+contaPagar.getDescricao());System.out.println("pago: "+contaPagar.isPago());Longid=Long.valueOf(fornecedorSelecionado.getValue().toString());Fornecedorf=this.fornecedorDao.load(id);contaPagar.setFornecedor(f);System.out.println("fornecedor: "+contaPagar.getFornecedor().getNome());this.contaPagarDao.save(contaPagar);contaPagar=newContaPagar();return"sucesso";}publicContaPagargetContaPagar(){returncontaPagar;}publicList<ContaPagar>getContas(){returnthis.contaPagarDao.list();}publicHtmlSelectOneMenugetFornecedorSelecionado(){returnfornecedorSelecionado;}publicvoidsetFornecedorSelecionado(HtmlSelectOneMenufornecedorSelecionado){this.fornecedorSelecionado=fornecedorSelecionado;}}
FornecedorHandler (este funciona sem erro)
publicclassFornecedorHandler{privateFornecedorfornecedor=newFornecedor();//private List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();//private long count = 0L;privateDao<Fornecedor>dao;publicvoidsetSessao(Sessionsession){this.dao=newDao<Fornecedor>(session,Fornecedor.class);}publicStringsalva(){System.out.println("Adicionando "+fornecedor.getNome());this.dao.merge(this.fornecedor);this.fornecedor=newFornecedor();return"sucesso";}publicvoidescolheFornecedor(ActionEventevent){UIComponentlink=event.getComponent();UIParameterparam=(UIParameter)link.findComponent("editId");Longid=(Long)param.getValue();this.fornecedor=this.dao.load(id);}publicList<Fornecedor>getFornecedores(){returnthis.dao.list();}// public Fornecedor getFornecedor() {// //System.out.println("Lendo fornecedores #" + fornecedores.size());//return fornecedor;//}publicvoidsetFornecedor(Fornecedorfornecedor){this.fornecedor=fornecedor;}publicFornecedorgetFornecedor(){returnfornecedor;}}
Os outros códigos são comuns para o FornecedorHandler e o ContaPagarHandler (daos, hibernateUtil...)
Grato, Carlos.
dev.rafael
Cara, a apostila não está disponivel para download e o código que você passou não parece suficiente.
De qualquer forma, a expressão que você referenciou (#{requestScope.sessao) me parece uma expressão
de inicialização para o método setSessao() registrado para “managed-property”. Nesse caso me parece que
a propriedade “sessao” da sua request não está retornando um objeto Session.
O que fez para colocar o objeto Session como propriedade da request, usou um Filter? Você tem certeza que
a expressão correta não é “sessionScope” ou ainda melhor “applicationScope”?
Caso isso não ajude, por favor poste o seu faces-config.xml e o código da view que está acessando
esses managed beans.