[JSF 2] - Dúvida bem específica

12 respostas
maranata

Olás,

Na minha aplicação tenho o seguinte código:

public String nova() {
		prepararCriarNova();
		
		return "/restrito/auditoria";
	}

Quando aciono este método e acesso essa página, a URL do browser não atualiza p/ a página direcionada, ou seja, não atualiza para “http://localhost:8080/blas/restrito/auditoria”. Desta forma, quando o usuário atualiza a página (F5), volta para a página de onde acionei a página auditoria.

Alguém conseguiu resolver este problema?

Obrigado :wink:

12 Respostas

CristianPalmaSola10

Tambem ja percebi esse problema, a url sempre fica um link atrasado naum eh mesmo ?

Naum tenho nem ideia de como resolver, talvez seja um bug do jsf sei la

giovanni_dalfre

Tenta assim:

return "/restrito/auditoria?faces-redirect=true";
maranata

giovanni_dalfre:
Tenta assim:

return "/restrito/auditoria?faces-redirect=true";


Olá Giovanni! Cara, havia tentado essa abordagem, porém adicionando “?faces-redirect=true” dá o seguinte erro no meu filtro (Open session view):

org.hibernate.TransactionException: Transaction not successfully started
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:131)
	at br.gov.ibama.aie.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:46)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
66623 [http-bio-8080-exec-10] ERROR org.hibernate.LazyInitializationException - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session

Existe alguma outra forma?

giovanni_dalfre
return "/restrito/auditoria?redirect=true";

tenta assim, acho que não seu caso não tem o faces.

maranata

giovanni_dalfre:
return "/restrito/auditoria?redirect=true";

tenta assim, acho que não seu caso não tem o faces.

Testei aqui. O erro não ocorre mais, porém ainda não redireciona corretamente.

giovanni_dalfre

Oxi… não sei oque fazer não :p…

Quando você da o redirect, era pro brownser atualizar e mudar de pagina.
Sem o redirect ele só manda a URL pro servlet, e o brownser fica desatualizado, por isso fica assim…

não sei não, vamos ver se alguém posta uma solução ai.

jeanmalvessi

Cara, aqui eu faço o seguinte:

Ao fim da ação de um botão qualquer, retorno uma String do Bean contendo a pagina para onde o usuario deve ser direcionado e faço um javascript contendo:

self.location = pagina;

Nunca tive esse tipo de problema, sempre direciona certo e atualiza o browser

maranata

jeanmalvessi:
Cara, aqui eu faço o seguinte:

Ao fim da ação de um botão qualquer, retorno uma String do Bean contendo a pagina para onde o usuario deve ser direcionado e faço um javascript contendo:

self.location = pagina;

Nunca tive esse tipo de problema, sempre direciona certo e atualiza o browser

Poderia dar um exemplo?

Vlw :wink:

Alys

maranata:
giovanni_dalfre:
return "/restrito/auditoria?redirect=true";

tenta assim, acho que não seu caso não tem o faces.

Testei aqui. O erro não ocorre mais, porém ainda não redireciona corretamente.

Olá,

A primeira resposta do giovanni_dalfre é como o redirect é feito por link mesmo, confira neste exemplo. A exceção que deu quando você fez dessa forma pode estar relacionada com problema de escopo - se você estiver usando @ViewScope no seu bean. É o caso?

maranata

Alys:
maranata:
giovanni_dalfre:
return "/restrito/auditoria?redirect=true";

tenta assim, acho que não seu caso não tem o faces.

Testei aqui. O erro não ocorre mais, porém ainda não redireciona corretamente.

Olá,

A primeira resposta do giovanni_dalfre é como o redirect é feito por link mesmo, confira neste exemplo. A exceção que deu quando você fez dessa forma pode estar relacionada com problema de escopo - se você estiver usando @ViewScope no seu bean. É o caso?

Opá… realmente estou utilizando ViewScoped… não estou na minha máquina no momento, mas testarei com RequestScoped e te falo. Mas desde já muito obrigado a todos.

Hebert_Coelho

Esse comportamento é normal.

Tome cuidado com o redirect, ele elimina os dados que já foram enviados do request! =D

giovanni_dalfre

Pois é…
Mais eu uso e abuso do “redirect” porque aqui no meu projeto só usamos “RequestScoped”.

Criado 7 de agosto de 2012
Ultima resposta 8 de ago. de 2012
Respostas 12
Participantes 6