Galera, estou desenvolvendo uma aplicação usando JSF 2 e Primefaces 3, e preciso fazer um botão genérico “VOLTAR” pra todas as telas do sistema,
Mas não tem uma tela default pra eu voltar. Depende da tela anterior por onde o usuário passou. Cada caso é uma tela diferente.
Alguém poderia me ajudar?
O botão voltar é parecido com botão cadastrar, salvar, excluir, remover. Você utiliza a tag p:commandButton e dependendo da necessidade utiliza action ou actionListener. No seu problema eu usaria um action em que no manageBean você implementaria as suas necessidades.
Mas existem diversas formas de você sair de São Paulo e chegar no Rio de Janeiro, cabe a você escolher o caminho então da uma pesquisada e estudada nos exemplos.
Um exemplo:
<p:commandButton value="Voltar" actionListener="#{manageBean.voltar}" ajax="false" />
Então Michels, é que esse botão voltar vai ficar no template. Ou seja, chamará o mesmo método para todas as telas.
[code]
Por isso queria saber se tem uma forma de eu recuperar a página/tela anterior pelo JSF para poder usar o mesmo método para todas as telas, entendeu?
js?
Tem outra solução sem ser javaScript?
Então Mauricio, eu coloquei a função do onclick e não funcionou.
<h:commandLink id="backLink" onclick="history.go(-1)" title="Voltar">
<h:graphicImage library="images" name="top_1a_voltar2.jpg" style="border:0px"/>
</h:commandLink>
Será que essa função é válida para commanLink?
Use history.back() do js… Já que é um genérico, não vejo outra saída. Se fosse um específico pra cada caso, não sei se tem como fazer via JSF.
Então gkgk, olhei a documentação do commandLink e não tem o atributo onclick.
Como eu poderia fazer isso?
Consegui resolver dessa forma:
public void back() {
RequestContext context = RequestContext.getCurrentInstance();
//execute javascript
context.execute("history.back();");
}
Obrigado cara =)
Bom dia amigo,
Tenho uma idéia não muito convencional, mas que pode resolver o seu caso.
Como você disse que está usando JSF, pode criar um PhaseListener ou se preferir pode ser um filtro mesmo, nesse PhaseListener, a cada requisição você salva o nome da página que disparou a requisição na sessão e você cria um Managed Bean com a action Voltar, que recupera esse nome de página da sessão e redireciona para a página necessária através do NavigationHandler do JSF.
Obs: não testei aqui ainda.
Qualquer dúvida vai postando o código.