fernandogodoy18 9 de mar. de 2011
Tente chamar o metodo em um actionListener e recuperar o id dentro do metodo,
Desta forma que vc implementou eu nunca fiz então não sei te dizer nem se funciona.
otaviojava 9 de mar. de 2011
você colocou a anotação em seu bean ?
edudebom 9 de mar. de 2011
No seu método está “Pesquisa” e você está chamando “pesquisa”. Veja se não é esse o problema.
Diego_Adriano 9 de mar. de 2011
Fernando … como seria da forma que vc falou … n entendi muito bem …
Otavio … coloquei apenas @ManagedBean … testei como request mas tive o mesmo erro …
Edu … vc novamente me abrindo os olhos cara … realmente … era isso … alterei a chamada de Pesquisa para pesquisa e solucionou o erro … porém agora tenho outro … o método não é chamado … a página é recarregada mas o evento não chega ao managedbean … o que pode ser ??
Obrigado galera.
edudebom 9 de mar. de 2011
Execute em modo depurador para ver se pelo menos ele chega na primeira linha do seu método. Se chegar, mesmo que null, pode ser o escopo. Aí tente mudar para @ViewScoped .
Caso nem chegar, tente colocar process=‘nomeForm’ no botão.
Kanin_Dragon 9 de mar. de 2011
Seu método deve ser String ou void.
Diego_Adriano 9 de mar. de 2011
Resolvi o problema da chamada do método … retirei essa parte do código
if (this.Funcao == null) … claro que o objeto esta null ainda n preenchi ele …rs … bem … agora esbarrei no problema do select …
Query query = this .entityManager .createQuery ( "select f from Funcao as f where f.id =:id" ) ;
return ( Funcao ) query .getSingleResult () ;
Não sei se estou fazendo da forma correta …
Esta me retornando esse erro …
AVISO : StandardWrapperValve [ Faces Servlet ] : PWC1406 : Servlet . service () for servlet Faces Servlet threw exception
javax . faces . el . EvaluationException : java . lang . IllegalArgumentException : org . hibernate . QueryException : Not all named parameters have been set : [ id ] [ select f from Funcao as f where f . id =: id ]
at javax . faces . component . MethodBindingMethodExpressionAdapter . invoke ( MethodBindingMethodExpressionAdapter . java : 102 )
at com . sun . faces . application . ActionListenerImpl . processAction ( ActionListenerImpl . java : 102 )
at javax . faces . component . UICommand . broadcast ( UICommand . java : 315 )
at javax . faces . component . UIViewRoot . broadcastEvents ( UIViewRoot . java : 775 )
at javax . faces . component . UIViewRoot . processDecodes ( UIViewRoot . java : 943 )
at com . sun . faces . lifecycle . ApplyRequestValuesPhase . execute ( ApplyRequestValuesPhase . java : 78 )
at com . sun . faces . lifecycle . Phase . doPhase ( Phase . java : 101 )
at com . sun . faces . lifecycle . LifecycleImpl . execute ( LifecycleImpl . java : 118 )
at javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 312 )
at org . apache . catalina . core . StandardWrapper . service ( StandardWrapper . java : 1523 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 343 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . LoginFilter . doFilter ( LoginFilter . java : 29 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . JPAFilter . doFilter ( JPAFilter . java : 30 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . JPAFilter . doFilter ( JPAFilter . java : 30 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . LoginFilter . doFilter ( LoginFilter . java : 29 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at org . apache . catalina . core . StandardWrapperValve . invoke ( StandardWrapperValve . java : 277 )
at org . apache . catalina . core . StandardContextValve . invoke ( StandardContextValve . java : 188 )
at org . apache . catalina . core . StandardPipeline . invoke ( StandardPipeline . java : 641 )
at com . sun . enterprise . web . WebPipeline . invoke ( WebPipeline . java : 97 )
at com . sun . enterprise . web . PESessionLockingStandardPipeline . invoke ( PESessionLockingStandardPipeline . java : 85 )
at org . apache . catalina . core . StandardHostValve . invoke ( StandardHostValve . java : 185 )
at org . apache . catalina . connector . CoyoteAdapter . doService ( CoyoteAdapter . java : 325 )
at org . apache . catalina . connector . CoyoteAdapter . service ( CoyoteAdapter . java : 226 )
at com . sun . enterprise . v3 . services . impl . ContainerMapper . service ( ContainerMapper . java : 165 )
at com . sun . grizzly . http . ProcessorTask . invokeAdapter ( ProcessorTask . java : 791 )
at com . sun . grizzly . http . ProcessorTask . doProcess ( ProcessorTask . java : 693 )
at com . sun . grizzly . http . ProcessorTask . process ( ProcessorTask . java : 954 )
at com . sun . grizzly . http . DefaultProtocolFilter . execute ( DefaultProtocolFilter . java : 170 )
at com . sun . grizzly . DefaultProtocolChain . executeProtocolFilter ( DefaultProtocolChain . java : 135 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 102 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 88 )
at com . sun . grizzly . http . HttpProtocolChain . execute ( HttpProtocolChain . java : 76 )
at com . sun . grizzly . ProtocolChainContextTask . doCall ( ProtocolChainContextTask . java : 53 )
at com . sun . grizzly . SelectionKeyContextTask . call ( SelectionKeyContextTask . java : 57 )
at com . sun . grizzly . ContextTask . run ( ContextTask . java : 69 )
at com . sun . grizzly . util . AbstractThreadPool$Worker . doWork ( AbstractThreadPool . java : 330 )
at com . sun . grizzly . util . AbstractThreadPool$Worker . run ( AbstractThreadPool . java : 309 )
at java . lang . Thread . run ( Thread . java : 662 )
edudebom 9 de mar. de 2011
Você precisa setar o valor do parâmetro id.
Algo assim. query.setParameter(“id”, id);
Diego_Adriano 9 de mar. de 2011
Edu … alterei como vc sugeriu … minha consulta ficou da seguinte forma:
public Funcao procura ( Long id ) {
Query query = this .entityManager .createQuery ( "select f from Funcao as f where f.id = :id" ) ;
query .setParameter ( "id" ,id ) ;
return ( Funcao ) query .getSingleResult () ;
}
Porém agora ele não encontra a entidade …
GRAVE : javax . persistence . NoResultException : No entity found for query
javax . faces . el . EvaluationException : javax . persistence . NoResultException : No entity found for query
at javax . faces . component . MethodBindingMethodExpressionAdapter . invoke ( MethodBindingMethodExpressionAdapter . java : 102 )
at com . sun . faces . application . ActionListenerImpl . processAction ( ActionListenerImpl . java : 102 )
at javax . faces . component . UICommand . broadcast ( UICommand . java : 315 )
at javax . faces . component . UIViewRoot . broadcastEvents ( UIViewRoot . java : 775 )
at javax . faces . component . UIViewRoot . processDecodes ( UIViewRoot . java : 943 )
at com . sun . faces . lifecycle . ApplyRequestValuesPhase . execute ( ApplyRequestValuesPhase . java : 78 )
at com . sun . faces . lifecycle . Phase . doPhase ( Phase . java : 101 )
at com . sun . faces . lifecycle . LifecycleImpl . execute ( LifecycleImpl . java : 118 )
at javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 312 )
at org . apache . catalina . core . StandardWrapper . service ( StandardWrapper . java : 1523 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 343 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . LoginFilter . doFilter ( LoginFilter . java : 29 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . JPAFilter . doFilter ( JPAFilter . java : 30 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . JPAFilter . doFilter ( JPAFilter . java : 30 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at filtros . LoginFilter . doFilter ( LoginFilter . java : 29 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 215 )
at org . apache . catalina . core . StandardWrapperValve . invoke ( StandardWrapperValve . java : 277 )
at org . apache . catalina . core . StandardContextValve . invoke ( StandardContextValve . java : 188 )
at org . apache . catalina . core . StandardPipeline . invoke ( StandardPipeline . java : 641 )
at com . sun . enterprise . web . WebPipeline . invoke ( WebPipeline . java : 97 )
at com . sun . enterprise . web . PESessionLockingStandardPipeline . invoke ( PESessionLockingStandardPipeline . java : 85 )
at org . apache . catalina . core . StandardHostValve . invoke ( StandardHostValve . java : 185 )
at org . apache . catalina . connector . CoyoteAdapter . doService ( CoyoteAdapter . java : 325 )
at org . apache . catalina . connector . CoyoteAdapter . service ( CoyoteAdapter . java : 226 )
at com . sun . enterprise . v3 . services . impl . ContainerMapper . service ( ContainerMapper . java : 165 )
at com . sun . grizzly . http . ProcessorTask . invokeAdapter ( ProcessorTask . java : 791 )
at com . sun . grizzly . http . ProcessorTask . doProcess ( ProcessorTask . java : 693 )
at com . sun . grizzly . http . ProcessorTask . process ( ProcessorTask . java : 954 )
at com . sun . grizzly . http . DefaultProtocolFilter . execute ( DefaultProtocolFilter . java : 170 )
at com . sun . grizzly . DefaultProtocolChain . executeProtocolFilter ( DefaultProtocolChain . java : 135 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 102 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 88 )
at com . sun . grizzly . http . HttpProtocolChain . execute ( HttpProtocolChain . java : 76 )
at com . sun . grizzly . ProtocolChainContextTask . doCall ( ProtocolChainContextTask . java : 53 )
at com . sun . grizzly . SelectionKeyContextTask . call ( SelectionKeyContextTask . java : 57 )
at com . sun . grizzly . ContextTask . run ( ContextTask . java : 69 )
at com . sun . grizzly . util . AbstractThreadPool $Worker . doWork ( AbstractThreadPool . java : 330 )
at com . sun . grizzly . util . AbstractThreadPool $Worker . run ( AbstractThreadPool . java : 309 )
at java . lang . Thread . run ( Thread . java : 662 )
Caused by : javax . persistence . NoResultException : No entity found for query
at org . hibernate . ejb . QueryImpl . getSingleResult ( QueryImpl . java : 270 )
at repositorios . FuncaoRepository . procura ( FuncaoRepository . java : 31 )
at managedbeans . FuncaoBean . getpesquisa ( FuncaoBean . java : 51 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 39 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 25 )
at java . lang . reflect . Method . invoke ( Method . java : 597 )
at javax . el . BeanELResolver . invokeMethod ( BeanELResolver . java : 737 )
at javax . el . BeanELResolver . invoke ( BeanELResolver . java : 467 )
at javax . el . CompositeELResolver . invoke ( CompositeELResolver . java : 246 )
at com . sun . el . parser . AstValue . invoke ( AstValue . java : 228 )
at com . sun . el . MethodExpressionImpl . invoke ( MethodExpressionImpl . java : 297 )
at com . sun . faces . facelets . el . TagMethodExpression . invoke ( TagMethodExpression . java : 98 )
at javax . faces . component . MethodBindingMethodExpressionAdapter . invoke ( MethodBindingMethodExpressionAdapter . java : 88 )
... 46 more
edudebom 9 de mar. de 2011
Parece que não foi encontrada a entity Funcao. Veja se a classe foi importada no seu arquivo de configuração. (persistence.xml talvez)
Diego_Adriano 10 de mar. de 2011
Então, pesquisando sobre esse erro descobri que é uma exception lançada qdo não é encontrado nenhum registro, e pelo fato de eu não estar tratando ela é mostrado esse erro no console.
Bem, eu coloquei a consulta dentro de um try/cath e realmente parou de exibir essa msg, porém eu tenho dados no BD … ou seja ele não esta realmente efetuando a pesquisa … mas aparentemente o select esta correto … esta como os exemplos …
edudebom 10 de mar. de 2011
Id é a chave primária ? Caso sim você pode fazer algo assim:
public Funcao procura(Long id) {
EntityManager em = getEntityManager();
try {
return em.find(Funcao.class, id);
} finally {
em.close();
}
}
Diego_Adriano 10 de mar. de 2011
Sim é primaria …
Bem …fiz como sugeriu …
Funcao funcao = new Funcao();
try{
Query query = (Query) this.entityManager.find(Funcao.class, id);
query.setParameter("id",id);
funcao = (Funcao) query.getSingleResult();
}
Bem eu testei colocando Println e ele chega ate o setparameter … mas n passa …
Me retorna essa exception …
GRAVE: java.lang.NullPointerException
Diego_Adriano 10 de mar. de 2011
Edu … consegui resolver o problema … em partes …a consulta ficou assim
Porém pelo fato de ter retornado null setei um valor para o ida … dentro da busca … e ele retornou a consulta … corretamente …
Então percebi que o valor não esta vindo da página …
Então tem algo errado nessa parte …
<h:outputLabel value= "ID: " for= "id" />
<h:inputText id= "id"
value= "#{funcaoBean.funcao.id}" >
</h:inputText>
<h:outputLabel value= "Nome: " for= "nome" />
<h:inputHidden id= "nome"
value= "#{funcaoBean.funcao.nome}" >
</h:inputHidden>
<h:commandButton value= "Pesquisar" action= "#{funcaoBean.pesquisa(id)}" />
Bem … no meu Login passo um OBJETO do tipo LOGIN para o Bean … contendo o USUARIO E SENHA … sera que eu deveria passar um OBJETO de FUNCAO para o meu bean ???
edudebom 10 de mar. de 2011
Para teste crie um método pesquisa sem parâmetro. Não instancie novamente o objeto. Pegue o objeto funcao do seu bean que está sendo usado no form. Ficaria algo assim:
try{
Query query = (Query) this.entityManager.find(Funcao.class, funcao.getId());
query.setParameter("id",id);
funcao = (Funcao) query.getSingleResult();
}
Diego_Adriano 10 de mar. de 2011
Então Edu … verifiquei em modo debug e o formulario não passa o id para o managedBean … já tentei passar o id … já tentei passar o obj todo e n funiona … ms o metodo de adicionar recebe normalmente …
Diego_Adriano 14 de mar. de 2011
Bem, alterei novamente meu codigo … porem tive o mesmo problema … o xtml não passa o valor para Bean …
Sera que alguem pode me ajduar ??
<h:form>
<h:outputLabel value= "ID: " for= "funcaoid" />
<h:inputText id= "funcaoid"
value= "#{funcaoBean.funcaoID}" >
</h:inputText>
<h:outputLabel value= "Nome: " for= "nome" />
<h:inputText id= "nome"
value= "#{funcaoBean.funcao.nome}" >
</h:inputText>
<h:commandButton value= "Salvar" action= "#{funcaoBean.getpesquisa}" immediate= "true" />
</h:form>
Bean
public class FuncaoBean {
@ManagedProperty ( value = "#{entityManager}" )
private EntityManager entityManager ;
private Funcao Funcao = new Funcao ();
private List < Funcao > Funcoes ;
private Funcao funcaoSelecionada ;
private Funcao [] listfuncaoSelecionada ;
private Long funcaoID ;
public Funcao getpesquisa (){
System . out . println ( "PROCURANDO FUNCAO ID" + " " + funcaoID ); //COLOQUEI PARA VERIFICAR SE RECEBIA ALGO
FuncaoRepository repository = new FuncaoRepository ( this . entityManager );
this . Funcao = repository . procura ( this . funcaoID );
System . out . println ( "NOme " + " " + Funcao . getNome ()); COLOQUEI PARA VERIFICAR SE HAVIA ALGUM RETORNO
return this . Funcao ;
}
Visivelmente não há erros com o código …