danieldestro:
Request. Mas o que isto difere?
O que difere é que, basicamente, você poderia fazer com que, se fosse sessão, você iniciasse a variável somente uma vez :)
mas minha sugestão:
se for request:
public class MyBackingBean {
public List<String> getUsers() {
List<String> result = new ArrayList<String>();
result.add( "blablabla" );
result.add( "blebleble" );
result.add( "bliblibli" );
return result;
}
}
se for session:
public class MyBackingBean {
private List<String> users;
private void loadList() {
myLisusersuserst = new ArrayList<String>();
users.add( "blablabla" );
myList.add( "blebleble" );
users.add( "bliblibli" );
}
public List<String> getUsers() {
if( users == null )
loadList();
return result;
}
}
Por que não colocar no construtor?
Porque além de não ser uma "boa prática" (...) imagina que você está utilizando injection no faces-config.xml e, nesse injection você injeta um DAO. Você quer que carregue a lista de usuários quando for chamado a primeira vez. Se você botar o método no construtor, as injeções não irão acontecer, ou seja, o teu DAO será null. Se tu utilizasse o ViewController do apacha Shale, existe um método lá que pertence ao lifecycle do Backign Bean (init(), mas também há outros métodos como preprocess(), prerender() e destroy()) que, pelo que sei só são chamado depois das injections.
Espero que tenha "clareado" melhor as idéias hehe
Abraço