Boa tarde prezados.
fiz uma listagem que esta funcionando com primefaces p:dataGrid. O problema que quero ajuda, é que depois que eu executo o projeto. se eu abro por exemplo a pagina principal do site onde esta o P:datagrid, e se eu parar de mecher na pagina por um tempo de meia hora. quando eu volto a abri essa mesma pagina ela perde a listagem do dataGrid. e tenho que atualizar a pagina com enter no navegador para o dataGrid voltar a carregar a listagem. Gostaria de saber como corrijo isso para o p:dataGrid não perder a listagem
. eu não tenho experiencia em desenvolvimento web. eu não sei porque isso acontece. Uso eclipse e servidor tomcat local.
Vou postar meu bean da lista do datagrid para vocês verem como esta, caso seja importante.
E esta em anexo também 2 imagen. uma em que o datagrid perde a listagem e outra normal .
@ManagedBean
@ViewScoped
public class ProdutosVendaControleBean implements Serializable {
private static final long serialVersionUID = 1L;
ProdutosVendaControle produtosVendaControle;
private List<Produto> listaProdutos;
public void todosProdutos() {
produtosVendaControle = new ProdutosVendaControle();
listaProdutos = produtosVendaControle.todos();
}
public List<Produto> getListaProdutos() {
//System.out.println("passou getLisgaProdutos");
return listaProdutos;
}
}
O JSF tem uma exceção chamada ViewExpiredException, essa exceção é lançada por padrão sempre que você fica sem mexer por 30 minutos e consequentemente acontece o que esta acontecendo com você.
Da para alterar o tempo da exceção, mas não é recomendando.
@Mike obrigado pela resposta e pelo link com uma das soluções eu vou dar uma olhada no link. Mas favor me diga uma coisa pela sua explicacao, mesmo se eu hospedar o site vai acontecer o mesmo problema.isso acontece só com jsf. Ai no caso em todo toda pagina que eu tiver chamando um bean de de escopo de view eu tenho que tratar ViewExpiredException. Ou eu tenho que tratar a exceção de viewExpiredException em todas as paginas que usam jsf idenpendente do tipo de bean se é session view ou request ? Obrigado pela ajuda.
Aham, não que seja seja um problema do JSF, mas é um comportamento dele.
Pensa o seguinte:
Um usuario entra no site, navega por 2 minutos e sai para fazer alguma coisa (mas deixa o site aberto) e volta só daqui 3 horas.
Ao invés da sessão ficar aberta por 3 horas, ela fica aberta por 30 minutos, assim economizando gastos do servidor
A exceção é independente de escopo
Da uma olhada nesse tópico
Você pode fazer diferentes tratativas
Se você tiver usando facelets, você pode colocar um p:exceptionHandler la e tratar
Você pode também colocar um redirect no web.xml quando a exceção ocorrer