JSF - Instanciar um ManagedBean

Galera, é o seguinte:

Tenho um Sistema Web(JSF) e nele existe um menu que faz o chamado a duas telas de cadastro: cadPais.faces e cadEstado.faces, Sendo que em cadEstado contem uma lista de Paises.
Ate ai tudo bem, o problema é que, para carregar a lista de paises no cadastro de Estado , eu estou fazendo um findAllPais() no metodo Construtor do PaisManagedBean, e ele só carrega a lista de pais uma vez, ou seja, quando eu adiciono um pais o mesmo nao vai aparecer na tela de estado, ao menos que eu suba novamente o JBoss…

Isso ocorre tambem quando estou na tela de uptPais(Tela de Update), aonde os campos estao todos preenchidos e vou no menu e entro novamente em cadPais.faces , e os campos ficam na instancia do MB e aparecem mesmo na tela de cadastro =/… Eu ja tentei mudar a tag <managed-bean-scope> para request, mas quando eu faso isso eu mato alguma coisas que eu fiz em session.

Enfim, gostaria de saber se existe alguma maneira de, cada ves que eu entrar na tela de cadPais.faces, é executado uma nova instancia do ManagedBean. Ou se alguem tiver uma solução melhor, eu agradeceria =)

[]´S

E dae…
Então… ideal é que você seus ManegedBeans com o escopo de request e somente usar o escopo session quando for realmente necessário.

Pois deixar ManegedBeans, sem necessidade, em escopo session irá consumir memória do seu servidor de aplicação, que pode começar a dar problemas de falta de memória…

Bom, isso é verdade…
mas teria como eu criar uma nova instancia de um ManagedBean na chamada de um .faces?

O que você pode fazer é ao invés de usar no construtor do seu ManegedBean o método findAll, criar uma atributo do tipo List onde no get desse atributo, use o método findAll.
Dessa forma, toda vez que uma página é chamada, o get da Lista será chamado e consequentemente será consultado todos os valores novamente…

public class SeuManegedBean {

	private List lista = new ArrayList();

	public List getLista() {
		lista = findAll();
		return lista;
	}

	public void setLista(List lista) {
		this.lista = lista;
	}
}

[quote=haamilton]O que você pode fazer é ao invés de usar no construtor do seu ManegedBean o método findAll, criar uma atributo do tipo List onde no get desse atributo, use o método findAll.
Dessa forma, toda vez que uma página é chamada, o get da Lista será chamado e consequentemente será consultado todos os valores novamente…

[code]
public class SeuManegedBean {

private List lista = new ArrayList();

public List getLista() {
	lista = findAll();
	return lista;
}

public void setLista(List lista) {
	this.lista = lista;
}

}
[/code][/quote]

Boa ! Valew a ideia ! Eu ja tinha um atributo mas nao pensei em alterar o get…