Problemas com DATATABLE e BEAN

Pessoal, alguém pode me dar uma luz do porque de não estar retornando nada na minha DATATABLE com este código aí embaixo:

Detalhe: se eu carrego a lista dentro do getLsFactory funciona… Mas eu quero fazer a consulta uma vez só…

MENAGED BEAN:

package draftSample.beans;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import drafSample.db.MyConnection;
import draftSample.classes.Factory;

public class HotSiteIniBean {
	
	private		List<Factory>	lstFactory;
	
	public HotSiteIniBean() {
		this.lstFactory = new ArrayList<Factory>();
		this.lstFactory = getLista();
	}
	
	public List<Factory> getLista() {
		
		List<Factory>	lst	=	new ArrayList<Factory>(); 
		
		try {

			Connection con = new MyConnection().getCon();
			Statement stmt = con.createStatement();
	
		    ResultSet 	rs;
			
	        rs = stmt.executeQuery("...");
	
		    while ( rs.next() ) {
		    	Factory fct = new Factory();
	    		fct.setCdFactory( rs.getString(1) );
	    		fct.setDsFactory( rs.getString(2) );
	    		lst.add(fct);
	        }
	
	        con.close();
		
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return lst;
	}
	
	public List<Factory> getLstFactory() {
		return lstFactory;
	}

	public void setLstFactory(List<Factory> lstFactory) {
		this.lstFactory = lstFactory;
	}

}

JSP:

<ice:dataTable 	id="data" 
		          		value="#{hotSiteIniBean.lstFactory}" 
		          		var="dst" 
		          		rows="10"
		          		styleClass="dataScrollerTable"
                        columnClasses="column1,column2"
                        columnWidths="20,200">

					<ice:column >
						<f:facet name="header">
			                <ice:commandSortHeader columnName="cdFactory" arrow="true">
			                    <ice:outputText value="Codigo"  />
		                    </ice:commandSortHeader>
				     	</f:facet>
						<h:outputText value="#{dst.cdFactory}" />
					</ice:column>
		             	
					<ice:column >
						<f:facet name="header">
			                <ice:commandSortHeader columnName="dsFactory" arrow="true">
			            	     <ice:outputText value="Nome"  />
		                    </ice:commandSortHeader>
				     	</f:facet>
						<h:outputText value="#{dst.dsFactory}" />
					</ice:column>

				</ice:dataTable>

Qual é o escope deste seu managedBean ? Session ou Request ? Verifique isso no seu faces-config.xml.

Abraço.

Ô Luis !

é REQUEST

Passei por um problema semelhante a este com o JSF. Quando você tenha um managed bean com escopo request, seus dados são perdidos à cada requisição. Quando se trabalha com o dataTable, é aconselhável que você utilize um componente do Tomahawk chamado SaveState. Esse componente (tag) mantém o estado de um managed bean e suas propriedade por um escopo maior que o de request, porém não tão grande quanto o de session. Eu resolvi desta maneira.
No seu caso, seria colocar as tags <t:SaveState> no seu dataTable, refereciando qual propriedade ou mesmo todo o managed bean que você deseja “manter o estado”.
Você precisa baixar a biblioteca do Tomahawk.
Pesquisa no google sobre <t:SaveState>.
Segue abaixo um exemplo de código usando este cara :

&lt;t:dataTable value="#{Contato.contatoList}" var="item"
			binding="#{Contato.contatoTOTable}" styleClass="dataTable"
			rowClasses="rowOdd, rowEven"&gt;
			&lt;h:column&gt;
				&lt;f:facet name="header"&gt;
					&lt;h:outputText value="#{msgs['legendaID']}" styleClass="table" /&gt;
				&lt;/f:facet&gt;
				&lt;t:saveState value="#{Contato.contatoList}"&gt;
					&lt;h:commandLink action="#{Contato.editaContato}"&gt;
						&lt;h:outputText value="#{item.id}" /&gt;
					&lt;/h:commandLink&gt;
				&lt;/t:saveState&gt;				
			&lt;/h:column&gt;
&lt;/t:dataTable&gt;

Pesquise sobre o componente, pois você está utilizando o iceFaces, não é ?
Talvez ele mesmo tenha algum mecanismo.
Mas mantenha o seu managed bean com escopo request mesmo, que é o recomendado.

Abraço !

Ok Luis! Vou pesquisar e depois retorno aqui!

Abração e obrigado !