Recarregar página através do Managed Bean

8 respostas
E

Eu tenho uma página xhtml e gostaria de recarregá-la em determinada ocasião dentro de um método do meu Managed Bean, como faço isto?

8 Respostas

H

Talvez esse código te ajude:

FacesContext context = FacesContext.getCurrentInstance(); Application application = context.getApplication(); ViewHandler viewHandler = application.getViewHandler(); UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId()); context.setViewRoot(viewRoot);

Não esqueça depois de redirecionar para a página que vc deseja exibir.

V

Boa noite!

Bem, se vc estiver usando JSF 2.0, vc pode chamar a própria página através da navegação implícita (no método action de seu h:commandButton ou h:commandLink).

Ex:

<h:commandButton value="Recarregar" action="minhapagina" />

Ou dentro do ManagedBean, como vc sugeriu:

minhapagina.xhtml

<h:commandButton value="Recarregar" action="#{MeuBean.abrirPagina}" />

MeuBean.java

public String abrirPagina()
{
return "minhapagina";
}

Ai o FacesServlet entende que você quer ir para a página minhapagina.xhtml e faz novamente o “carregamento da página”.

O problema é que dependendo do escopo do seu Bean, os valores serão perdidos.

Até +!

E

jakefrog:

Não esqueça depois de redirecionar para a página que vc deseja exibir.

Como redireciono?

E

Boa noite!

Bem, se vc estiver usando JSF 2.0, vc pode chamar a própria página através da navegação implícita (no método action de seu h:commandButton ou h:commandLink).

Ex:

<h:commandButton value="Recarregar" action="minhapagina" />

Ou dentro do ManagedBean, como vc sugeriu:

minhapagina.xhtml

<h:commandButton value="Recarregar" action="#{MeuBean.abrirPagina}" />

MeuBean.java

public String abrirPagina()
{
return "minhapagina";
}

Ai o FacesServlet entende que você quer ir para a página minhapagina.xhtml e faz novamente o “carregamento da página”.

O problema é que dependendo do escopo do seu Bean, os valores serão perdidos.

Até +!

Então, mas neste caso o usuário precisa clicar no commandButton, eu quero fazer isto sem intervenção do usuário.

H

eliflavio:
jakefrog:

Não esqueça depois de redirecionar para a página que vc deseja exibir.

Como redireciono?

Você pode utilizar o sendRedirect do response ou o forward do requestDispatcher.

E

jakefrog:
eliflavio:
jakefrog:

Não esqueça depois de redirecionar para a página que vc deseja exibir.

Como redireciono?

Você pode utilizar o sendRedirect do response ou o forward do requestDispatcher.

Não funciona de jeito nenhum, veja meu código:

public void consultar(ActionEvent actionEvent) {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
try {
    response.sendRedirect("/Teste/Teste.pdf");
    FacesContext.getCurrentInstance().responseComplete();
} catch (IOException e) {
}
}

Mas digitando manualmente este link no browser, após o IP e a porta do meu servidor, o PDF é aberto normalmente. Eu preciso abrir uma nova guia no browser com o arquivo PDF que eu quiser, mas preciso fazer isto dentro do ManagedBean porque este PDF é gerado dinamicamente e estou usando o evento actionListener do p:commandButton

V

eliflavio:
jakefrog:
eliflavio:
jakefrog:

Não esqueça depois de redirecionar para a página que vc deseja exibir.

Como redireciono?

Você pode utilizar o sendRedirect do response ou o forward do requestDispatcher.

Não funciona de jeito nenhum, veja meu código:

public void consultar(ActionEvent actionEvent) {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
try {
    response.sendRedirect("/Teste/Teste.pdf");
    FacesContext.getCurrentInstance().responseComplete();
} catch (IOException e) {
}
}

Mas digitando manualmente este link no browser, após o IP e a porta do meu servidor, o PDF é aberto normalmente. Eu preciso abrir uma nova guia no browser com o arquivo PDF que eu quiser, mas preciso fazer isto dentro do ManagedBean porque este PDF é gerado dinamicamente e estou usando o evento actionListener do p:commandButton

Boa noite!

Amigo, não entendi bem o seu problema: Você quer que sua aplicação abra uma nova janela com o PDF assim que ele terminar de ser gerado pelo sistema, sem o usuário clicar em nada?

Se for isso, penso que a solução será criar uma thread para gerar este PDF, e que abra uma view quando for finalizada. Seria isso?

Até +!

E

vinnysoft:
eliflavio:
jakefrog:
eliflavio:
jakefrog:

Não esqueça depois de redirecionar para a página que vc deseja exibir.

Como redireciono?

Você pode utilizar o sendRedirect do response ou o forward do requestDispatcher.

Não funciona de jeito nenhum, veja meu código:

public void consultar(ActionEvent actionEvent) {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
try {
    response.sendRedirect("/Teste/Teste.pdf");
    FacesContext.getCurrentInstance().responseComplete();
} catch (IOException e) {
}
}

Mas digitando manualmente este link no browser, após o IP e a porta do meu servidor, o PDF é aberto normalmente. Eu preciso abrir uma nova guia no browser com o arquivo PDF que eu quiser, mas preciso fazer isto dentro do ManagedBean porque este PDF é gerado dinamicamente e estou usando o evento actionListener do p:commandButton

Boa noite!

Amigo, não entendi bem o seu problema: Você quer que sua aplicação abra uma nova janela com o PDF assim que ele terminar de ser gerado pelo sistema, sem o usuário clicar em nada?

Se for isso, penso que a solução será criar uma thread para gerar este PDF, e que abra uma view quando for finalizada. Seria isso?

Até +!

Não é isso não. A página é uma consulta de relatório. O usuário informa os campos de filtro e clica no commandButton que dispara um actionListener que chama um método no meu Managed Bean. Este método conecta num outro servidor, passa as informações, recebe o PDF de resposta, salva este PDF na pasta da aplicação no Glassfish e preciso abrir uma nova guia no browser para exibir este PDF ao usuário. Entendeu?

Criado 30 de novembro de 2011
Ultima resposta 2 de dez. de 2011
Respostas 8
Participantes 3