Erro com Struts... socorro!

Alguem sabe pq acontece esse erro em minha aplicação Struts? estou 3 dias tentando resolver esse problema…

javax.servlet.ServletException: No getter method for property codOperacao of bean atributosOperacao

Obrigado.


Trecho de codigo da minha action:

try {

        OpeDAO opeDAO = new OpeDAO();             
       
        HttpSession session = request.getSession(); 
        String codOperacao = request.getParameter("codOperacao");                      
       
        int idOpe = Integer.parseInt(codOperacao);             
       ArrayList atributosOpe = opeDAO.AtributoOperacao(idOpe);           
       session.setAttribute("atributosOperacao", atributosOpe); 
       
                  
    }        
    catch (Exception e) {
        errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.ope.edita"));            
    }

Trecho da classe OpeDAO:

public ArrayList AtributoOperacao(int idOperacao) throws SQLException {

       conn = retornaConn(); 
       
       Statement stmt = conn.createStatement();
                            
       ArrayList atributos  = new ArrayList(); 
    
    try {
        
        ResultSet rs = stmt.executeQuery ("select * from Tab_Operacao where CodOperacao LIKE '%" + idOperacao + "%'");
        
        if (rs.next()) { 
           OpeBean ope = new OpeBean(); 
           ope.setCodOperacao(rs.getInt("CodOperacao"));
           ope.setDescricao(rs.getString("Descricao"));
           ope.setAtivo(rs.getInt("Ativo"));
           ope.setId(rs.getInt("CodUsuario"));
           ope.setTipoOperacao(rs.getInt("TipoOperacao"));
           atributos.add(ope); 
    
        }  
      rs.close(); 
  } 
  catch (SQLException e) { 
        throw e; 
        
  } 
  finally{               
             stmt.close();
             conn.close();
  }     
  System.out.println(atributos);  
  return atributos; 
    
} 

--------------------------------------------------------------------------------------Techo da minha JSP:

<html:form action="/salvaEditaOpe.do">
Código: <bean:write name=“atributosOperacao” property=“codOperacao”/>

Descrição: &lt;html:text name="atributosOperacao" property="descricao"/&gt;

&lt;html:radio property="ativo" value="1" name="atributosOperacao"&gt;Ativo&lt;/html:radio&gt;
&lt;html:radio property="ativo" value="2" name="atributosOperacao"&gt;Inativo&lt;/html:radio&gt;

<html:submit>Alterar</html:submit>

</html:form>

Oi ,

Vc passou como String na tua Action :
String codOperacao = request.getParameter(“codOperacao”);
Mas na tua classe OpeDAO no select vc colocou como int .

ope.setCodOperacao(rs.getInt("CodOperacao"));

Mas se eu passar como int, não posso usar o request.getParameter(“codOperacao”); pq ele exige uma String…

o problema é que vc esta passando para a pagina uma ArrayList

 ArrayList atributosOpe = opeDAO.AtributoOperacao&#40;idOpe&#41;;
session.setAttribute&#40;&quot;atributosOperacao&quot;, atributosOpe&#41;; 

e no jsp vc esta tratando o obejto com seu bean

Código&#58; &lt;bean&#58;write name=&quot;atributosOperacao&quot; property=&quot;codOperacao&quot;/&gt;

Descrição&#58; &lt;html&#58;text name=&quot;atributosOperacao&quot; property=&quot;descricao&quot;/&gt; 

neste caso vc não precisa de um ArrayList.

o seu metodo

AtributoOperacao poderia retornar um OpeBean ae vc passa esse cara pra pagina, por exemplo, o DAO ficaria assim

[code]public OpeBean AtributoOperacao(int idOperacao) throws SQLException {
conn = retornaConn();

Statement stmt = conn.createStatement&#40;&#41;;
OpeBean ope = null;
try &#123;

	ResultSet rs = stmt.executeQuery &#40;&quot;select * from Tab_Operacao where CodOperacao LIKE '%&quot; + idOperacao + &quot;%'&quot;&#41;;

	if &#40;rs.next&#40;&#41;&#41; &#123;
		ope = new OpeBean&#40;&#41;;
		ope.setCodOperacao&#40;rs.getInt&#40;&quot;CodOperacao&quot;&#41;&#41;;
		ope.setDescricao&#40;rs.getString&#40;&quot;Descricao&quot;&#41;&#41;;
		ope.setAtivo&#40;rs.getInt&#40;&quot;Ativo&quot;&#41;&#41;;
		ope.setId&#40;rs.getInt&#40;&quot;CodUsuario&quot;&#41;&#41;;
		ope.setTipoOperacao&#40;rs.getInt&#40;&quot;TipoOperacao&quot;&#41;&#41;;
		

	&#125;
	rs.close&#40;&#41;;
&#125;
catch &#40;SQLException e&#41; &#123;
	throw e;
&#125;
finally&#123;
	stmt.close&#40;&#41;;
	conn.close&#40;&#41;;
&#125;

return ope;

} [/code]

e sua action assim:

[code]try {

OpeDAO opeDAO = new OpeDAO&#40;&#41;;

HttpSession session = request.getSession&#40;&#41;;
String codOperacao = request.getParameter&#40;&quot;codOperacao&quot;&#41;;

int idOpe = Integer.parseInt&#40;codOperacao&#41;;
OpeBean atributosOpe = opeDAO.AtributoOperacao&#40;idOpe&#41;;
session.setAttribute&#40;&quot;atributosOperacao&quot;, atributosOpe&#41;;

}
catch (Exception e) {
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.ope.edita"));
} [/code]

e use as tags do forum qdo incluir codigo!

flw

Oi, vc poderia passar o codigo da sua Bean?

Olá PM…

Na verdade o erro de status 500 sumiu porem desta vez uma exception parece estar atrapalhando:

java.lang.NullPointerException

    at com.myapp.struts.dao.OpeDAO.AtributoOperacao(OpeDAO.java:170)

    at com.myapp.struts.action.EditaOpeAction.execute(EditaOpeAction.java:46)

ref as seguintes linhas no codigo:

na OpeDAO

[code]ope.setCodOperacao(rs.getInt("CodOperacao"));

[/code]

na action

[code]OpeBean atributosOpe = opeDAO.AtributoOperacao(idOpeQuery);
[code][/code]

Vc esta criando a instancia do OpeBean no DAO ?

if &#40;rs.next&#40;&#41;&#41; &#123;
         ope = new OpeBean&#40;&#41;;
         ope.setCodOperacao&#40;rs.getInt&#40;&quot;CodOperacao&quot;&#41;&#41;;
         ope.setDescricao&#40;rs.getString&#40;&quot;Descricao&quot;&#41;&#41;;
         ope.setAtivo&#40;rs.getInt&#40;&quot;Ativo&quot;&#41;&#41;;
         ope.setId&#40;rs.getInt&#40;&quot;CodUsuario&quot;&#41;&#41;;
         ope.setTipoOperacao&#40;rs.getInt&#40;&quot;TipoOperacao&quot;&#41;&#41;;
         

      &#125; 

Sim… fiz exatamente como vc mostrou acima!

cara…esse erro ocorre qdo vc tenta acessar um membro de um objeto usando uma referencia nula.

Pf, post seu DAO.

Desculpe…

Não tinha criado essa instancia… agora funcionou!

Gostaria de encerrar este topico agradecendo a ajuda de todos e em especial a do colega PM que realmente solucionou meu problema…

Abraço!!