Olá pessoal, alguém pode me explicar ou indicar algum material que explique quando usar o session scope e o request scope no nosso querido faces-config.xml? Não entendo muito bem qual o impacto que realmente terei mudando de um para outro… Uso tudo request, exceto classes de filter que precisam realmente estar em session.
PS: Uso o RichFaces.
Obrigado!
Cara é o seguinte, eu já trabalhei com o RichFaces e JSF com Facelets, e apanhava bastante desse negócio até eu pegar algo pra ler. Tem que procurar no google infelizmente não tenho materiais sobre isso, mas posso tentar lhe ajudar explicando o que sei de cabeça.
Mas é bem simples, quando você acessa uma tela e essa tem um managed bean associado a mesma para por exemplo: exibição de uma grid que é montada no construtor. O java acessa o construtor e incia os métodos chamados, se o scope dessa página tiver definido como session, o java não irá mais passar por esse construtor, pois os valores ali contidos (classe) não serão perdidos. Diferente do request, que toda vez que ele acessa a página e essa está vinculada a um managedbean ele passa pelo construtor, pois com o scope request ele faz uma requisição a cada vez que é acessado o MB.
Você vai encontrar problemas com isso, principalmente se você utiliza formularios acima de uma grid, e da refresh nela com o reRender para inserir os valores e trabalhar com um ajax. Eu aconselho vc dar uma olhada na tag a4j:keepAlive, tem no site do richFaces no liveDemo, porém ele só funciona com facelets, então se você ainda não ta mechendo com Facelets e só com o JSF puro, aconselho vc a começar a mudar pois existem mutios bugs.
Espero ter ajudado, alguem me diga se estiver errado.
Obrigado Daniel, isso ajudou bastante. Uso tudo “request”, não senti falta do “session” provavelmente por causa do keepAlive entao. To usando Facelets sim. Vou rever aqui e testar. valeu pela ajuda.