Problema com commandLink JSF

?

Pessoal descobri que se eu tirar o paginator da minha tabela funciona =S

Nossa um coisa NADA VE , é o prime de muitos bugs =/

Mais não posso fazer isso…


Outra estou usando a versão 3.0 se eu mudar para 2.2.1 funciona, só que ai o file Upload não funciona mais

gostaria de manter a 3.0 e arrumar alguma forma de isso funcionar…

Alguem poderia me ajudar?

já tentou mudar o action

por actionListener?

JÁ tentei nao funcionou

bem uma vez eu tive esse problema ai só q era quando eu usava o <h:commandLink>

depois eu mudei para <p:commandLink> (Primefaces) e deu certo…

tenta também

ja testei com o Prime tambem e nada, o que é muito estranho se eu tirar o paginator das grids funciona normal

O prime é bom tem varios componentes e tals., mais tem muito bugs,ai temque perder um tempão tentando descubrir um solução

Pessoal Ninguem sabe? Algum moderador poderia me ajudar?

Amigo, primeiro: você está mexendo com JSF, esquece essa história de ServletResponse. Tire o JSP da sua mente, ok? Aqueles duros dias que você tinha que mexer nos bitzinhos manualmente já passaram (graças a Deus!). O jeito mais fácil (que é a própria proposta do JSF) é você esquecer essa coisa de response e request e usar as regras de navegação, ou então usar o próprio javascript para resolver o seu problema de voltar.

Minhas duas propostas:

1ª solução - regra de navegação:

<h:commandLink title="Voltar" action="#{clienteMB.voltar}" style="margin-left:20px">

Como você fez. Mas no clienteMB, escreva assim:

public String voltar() { return "menu" }

Então crie uma regra de navegação em seu faces-config.xhtml:

<navigation-rule> <from-view-id>/"a página que você está"</from-view-id> <navigation-case> <from-outcome>menu</from-outcome> <to-view-id>/"a página para onde você vai"</to-view-id> </navigation-case> </navigation-rule>

2ª solução - javascript:

<h:commandLink id="botao_voltar" onclick="javascript:history.go(-1)" value="Voltar" />

rsrs to ligado, apenas fiz isso para testar porque o

public String voltar() {       
     return "menu"     
} 
<navigation-rule>   
      <from-view-id>/"a página que você está"</from-view-id>   
      <navigation-case>   
       <from-outcome>menu</from-outcome>   
       <to-view-id>/"a página para onde você vai"</to-view-id>   
      </navigation-case>   
    </navigation-rule>  

NÃO FUNCIONA

DA AQUELE ERRO…

Já o JavaScript

<h:commandLink id="botao_voltar" onclick="javascript:history.go(-1)" value="Voltar" />  

vou testar, mais ele volta para pagina anterior certo? gostaria que ele voltasse para pagina principal “MENU”

Coisas estranhas…
1º)se eu tirar a tirar o paginator da DataTable ai funciona.
2º) Estou usando a versão 3 do PrimeFaces…se eu mudar para 2.2.1 tbm funciona só que na 2.2.1 o FileUpload não funciona… Então eu preciso manter a 3.0 e fazer funcionar

Em vez disso:

&lt;h:commandLink id="botao_voltar" onclick="javascript:history.go(-1)" value="Voltar" /&gt; 

Faz assim:

&lt;h:commandLink id="botao_voltar" action="#{controller.voltar}" value="Voltar" /&gt; 

e cria uma navigation rule pra voltar pra página que vc quer.

Pessoal, se vocês ver o tópico inteiro , eu ja fiz isso,

ALIAS isto foi a primeira coisa que eu fiz,esta gerando aquele exceção

Não sei c já resolveu o problema mas vou passar minha experiencia, também estou usando o Primefaces 3.0,
e tenho ciência que é uma versão inacabada, portanto é natural que encontremos alguns BUGs.

Eu passei por este problema e resolvi indo ao site do próprio PF. Se entrarmos no site do PrimeFaces em FAQ (http://www.primefaces.org/faq.html)
vai conferir no item 4 o porque do problema que vc está enfrentando:

[quote]Why navigations do not work with PrimeFaces commandButton and commandLink?
PrimeFaces does not support forward based navigations within an ajax request, you need to do redirect instead or set ajax to false.
[/quote]

Eu tenho usado a opção do ajax=false

Para ir direto a página chamo o nome da pagina sem a extensão direto no atributo action do p:command :

<p:commandButton action="nomeDaPaginaSemExtensao"  ajax="false" />

Já se houver necessidade de fazer mais alguma coisa alem de ir para alguma página eu aciono
o nome do método e no return do método eu aciono o nome da pagina sem a extensão:

 <p:commandButton action="#{controller.irParaMenu}" ajax="false" />

controller

public String irParaMenu()
{
      (...faz as coisas a mais...)
      return "nomeDaPaginaSemExtensao";
}

É isso, espero ter ajudado.

Se o history.go(-1) não te atende, tente este:

<h:commandLink id="botao_voltar" onclick="javascript:document.location.href = 'página do seu menu.jsf'" value="Cancelar" />

achei alguem que sabe o que esta acontencedo…

sempre usei ajax false.

funciona mais para ir para a pagina de “MENU”
nem chega no metodo do MB, coloquei um breakPoint para testar.
MESMO COM AJAX FALSE gera aquela exceção.

Ja abri um post no site do prime até agora ninguem respondeu

na versão 2.2.1 funciona , só que ai o FileUpload ja eraa…preciso da 3.0

enquanto usar o java script do nossa amigo ai encima não consegui testar ainda…

Blz

Quanto a nem chegar ao MB, eu tb passei por isso, mas o meu erro era por não saber usar corretamente o action e actionListener da uma olhada neste post http://www.guj.com.br/java/86357-qual-a-diferenca-entre-action-e-actionlistener-no-jsf-

La explica direitinho quando usar um e outro, pode ser esse o motivo do seu commandbutton nem passar pelo MB,

Lembrei tb. do atributo immediate coloque ele como True, para que o JSF pule a fase de validação, pois pode ser que
ele esteja “enroscando” em alguma validação.

É isso, T+

To ligado a diferenças deles para redirecionar eu uso action

Em fim nada funcionou, nem o javaScrip nem colocando immediante true

contina gerando essa exceção

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)
	org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)

root cause

java.lang.NullPointerException
	org.primefaces.component.datatable.DataHelper.decodeFilters(DataHelper.java:182)
	org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:47)
	javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
	javax.faces.component.UIData.processDecodes(UIData.java:1162)
	org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:595)
	javax.faces.component.UIForm.processDecodes(UIForm.java:225)
	javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
	javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
	javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:933)
	com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
	org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.

e pior não tenho mais aonde recorrer,o site do prime ninguem se manifesta

O que eu percebi é que quando eu iniciou a aplicação no console do tomcat gera a seguinte exceção,acho que tem algo haver

GRAVE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
	at org.primefaces.component.datatable.DataHelper.decodeFilters(DataHelper.java:182)
	at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:47)
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
	at javax.faces.component.UIData.processDecodes(UIData.java:1162)
	at org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:595)
	at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:933)
	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:409)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)
08/06/2011 18:31:28 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()

?