Hashtable com struts

PESSOAL NÃO CONSIGO CARREGAR MINHA HASHTABLE NA JSP SEM USAR GET E SET COM STRUTS… A PAGINA SIMPLESMENTE NÃO CARREGA NADA… ALGUEM SABE OQUE PODE SER??

DESDE JA, OBRIGADO!

1° método retorna um hashtable, a idéia é trazer uma lista com dois parametros por linha

protected static Hashtable[] selectCpfAfiliado()throws SQLException{ SQLServerConnection servConn = new SQLServerConnection(); Hashtable[] resultado = {}; String query=""; try{ query = "SELECT count(valor_string) qtde_registros, valor_string FROM"+ " retail..organizacao_cadastro_campo_extra WHERE id_campo=23 GROUP BY valor_string;"; ResultSet rs = servConn.dataLoad(query); if(!servConn.isEmptySet()){ resultado=new Hashtable[servConn.getNRows()]; for(int i=0; i<servConn.getNRows()-1; i++){ rs.next(); if (Util.parseInt(rs.getString("qtde_registros"))>1){ resultado[i] = new Hashtable(); resultado[i].put("qtde_registros",rs.getString("qtde_registros")); resultado[i].put("valor_string",rs.getString("valor_string")); LogSis.logar(LogSis.LOG4J_INFO_LEVEL,"ERRO!"); } } } return resultado; }finally{ servConn.closeConnection(); } }
Action Responsavel pela instancia do método:[code] public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//validação de sessão
if(!ControleAnuncio.auteunticaSessao(request.getCookies(),response)){
return mapping.findForward("expira");
}
//carrega os dados
Hashtable[] listaCpf = ControleAfiliado.selectCpfAfiliado();

     request.setAttribute("listaCpf",listaCpf);
     
    return mapping.findForward("listar");
}[/code]

E por fim a JSP que não monta a lista de jeito nenhum!!

[code]<form-property name="listaCpf" type="java.util.Hashtable"/>

<logic:iterate id="it" name="listaCpf" type="com.buscape.vitrine.beans.OrganizacaoCompleta">
<tr>
<td>
<bean:write name="it" property="qtde_registros"/>
</td>
<td>
<bean:write name="it" property="valor_string"/>
</td>
</tr>
</logic:iterate>

[/code]

pq vc esta usando um array de HashTable???

pq não usa ArrayList q eh muit mais simples de manipular?

Disseram que seria melhor COM HASH, mas posso mudar isso.
Teria um exemplo basico de como ficaria com ARRAY LIST?

Pelo menos a parte da Action e da JSP…

Obrigado!

na Action a única coisa q vc muda é:

//carrega os dados       
List listaCpf = ControleAfiliado.selectCpfAfiliado&#40;&#41;;

e o seu método ficará:

public static List selectCpfAfiliado&#40;&#41;throws SQLException&#123;
        SQLServerConnection servConn = new SQLServerConnection&#40;&#41;;
        List resultado = new ArrayList&#40;&#41;;       
        ...

lembra de ao pegar o ResultSet, popular um Objeto seu mesmo acho q sera “OrganizacaoCompleta”, e vai inserindo no ArrayList…

nem precisa colocar o type do logic:iterate, mas lembrando que qtde_registros e valor_string devem ser propriedades de “OrganizacaoCompleta”…

&lt;logic&#58;iterate id=&quot;it&quot; name=&quot;listaCpf&quot; &gt;
&lt;tr&gt;
   &lt;td&gt;
      &lt;bean&#58;write name=&quot;it&quot; property=&quot;qtde_registros&quot;/&gt;
   &lt;/td&gt;
   &lt;td&gt;
      &lt;bean&#58;write name=&quot;it&quot; property=&quot;valor_string&quot;/&gt;
   &lt;/td&gt;
&lt;/tr&gt;
&lt;/logic&#58;iterate&gt;

eh legal vc dar uma estudada nas tags logic:empty e logic:notEmpty e bem útil quando vc está fazendo pesquisas assim…

espero ter ajudado…

flw

cara não entendi essa parte…

resultado.add(organizacaoCompleta);

não sei qual objeto usar… como disse só fiz iterações usando get e set…

poderia mostrar melhor a montagem do metodo pra ficar mais claro?

Obrigado!

Rodrigo.

eu não testei, fiz aqui na mão mesmo, mas eh algo assim:

public static List selectCpfAfiliado&#40;&#41;throws SQLException&#123;
        SQLServerConnection servConn = new SQLServerConnection&#40;&#41;;
        List resultado = new ArrayList&#40;&#41;;       
        String query=&quot;&quot;;
        try&#123;
                query = &quot;SELECT count&#40;valor_string&#41; qtde_registros, valor_string FROM&quot;+
                    &quot; retail..organizacao_cadastro_campo_extra WHERE id_campo=23 GROUP BY valor_string;&quot;;              
                ResultSet rs = servConn.dataLoad&#40;query&#41;;
                if&#40;!servConn.isEmptySet&#40;&#41;&#41;&#123;
                        for&#40;int i=0; i&lt;servConn.getNRows&#40;&#41;-1; i++&#41;&#123;
                                rs.next&#40;&#41;;
                                if &#40;Util.parseInt&#40;rs.getString&#40;&quot;qtde_registros&quot;&#41;&#41;&gt;1&#41;&#123;
                                        OrganizacaoCompleta organizacaoCompleta = new OrganizacaoCompleta&#40;&#41;;
                                        organizacaoCompleta.setQtde_registros&#40;rs.getString&#40;&quot;qtde_registros&quot;&#41;&#41;;
                                        organizacaoCompleta.setValor_string&#40;rs.getString&#40;&quot;valor_string&quot;&#41;&#41;;
                                        resultado.add&#40;organizacaoCompleta&#41;;
                                &#125;
                        &#125;
                &#125;
                return resultado;
        &#125;finally&#123;
            servConn.closeConnection&#40;&#41;;
 &#125;

OK!! mas não tenho o objeto “OrganizacaoCompleta();”

Não posso usar métodos GET e SET… a idéia é imprimir o resultado sem usar Gets e SETs…

Tem como fazer isso… desse jeito ou de outro???

Obrigado!!!

aaaaahhhhhhh

bom, eu sempre gostei de trabalhar com TOs, funciona da seguinte forma, vc monta um ObjetoTO para praticamente cada uma das suas tabelas do banco…e tb monta TOs para consultas especificas, no seu caso por exemplo OrganizacaoCompletaTO, com os campos q nos ja citamos e os getters e setters…

sem os getters e setters, acho q nao vai ser possivel usando a tag logic:iterate, pq ela itera em cima de classes q implementem a interface List, e automaticamente procura o metodo getXXX dentro de cada objeto na iteração…

se vc tem a liberdade de mudar, faz dessa forma q eu falei, pelo menos eh a melhor na minha opinião…

flw