hej, mam takie pytanie-przykladowo tworze tabelke. aby naladowac ja wynikami (ktore sa pobierane z beana) napisze:
<ice:dataTable
columnClasses="columnsColumn"
value="#{mojBean.accounts}"
rows="#{mojBean.accountsSize}"
var="item">
<ice:column>...//itd
</ice:dataTable>
bean:
public class MojBean(){
private ArrayList accounts;
private int accountsSize;
public MojBean(){
loadAccounts();//ta metoda wyciaga z bazy uzytkownikow i przypisuje ich do listy accounts
}
//gettery i settery
}
miejsce : value="#{mojBean.accounts}"
jest rownowazne utworzeniu obiektu mojBean
fatalnym jest to, ze kazde takie odwolanie, tworzy mi obiekt na nowo, a co za tym idzie wywolywana jest metoda loadAccounts. mam pozniej takie miejsca w kodzie gdzie musze wykorzystac 'mojBean' ale nie moge sobie pozwolic na kolejnego selecta z bazy bo akurat w tamtych miejscach to bez sensu. metode te jednak musze wywolac w konstruktorze aby zapelnic dataTable wartosciami. najlepszym rozwiazaniem dla mnie byloby aby moc skorzystac z konstruktora z argumentem. przykladowo moglaby miec:
public MojBean(int i){
if(i == 1){
loadAccounts();//ta metoda wyciaga z bazy uzytkownikow i przypisuje ich do listy accounts
} else{
//cos tam
}
}
ale jak ja moge w jsf utworzyc obiekt z argumentem??? czy da sie zrobic cos takiego: value="#{mojBean(2).accounts}"
jesli tak-to jak?
pzdr,
misty