Erro com Struts... socorro!

9 respostas
R

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>

9 Respostas

D

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"));
R

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

P

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

public OpeBean AtributoOperacao&#40;int idOperacao&#41; throws SQLException &#123;
	conn = retornaConn&#40;&#41;;
	
	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;
&#125;

e sua action assim:

try &#123;

	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;;


&#125;
catch &#40;Exception e&#41; &#123;
	errors.add&#40;ActionErrors.GLOBAL_ERROR, new ActionError&#40;&quot;error.ope.edita&quot;&#41;&#41;;
&#125;

e use as tags do forum qdo incluir codigo!

flw

A

Oi, vc poderia passar o codigo da sua Bean?

R

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
ope.setCodOperacao&#40;rs.getInt&#40;&quot;CodOperacao&quot;&#41;&#41;;

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

P

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;"CodOperacao"&#41;&#41;;
         ope.setDescricao&#40;rs.getString&#40;"Descricao"&#41;&#41;;
         ope.setAtivo&#40;rs.getInt&#40;"Ativo"&#41;&#41;;
         ope.setId&#40;rs.getInt&#40;"CodUsuario"&#41;&#41;;
         ope.setTipoOperacao&#40;rs.getInt&#40;"TipoOperacao"&#41;&#41;;
         

      &#125;
R

Sim… fiz exatamente como vc mostrou acima!

P

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

Pf, post seu DAO.

R

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!!

Criado 17 de agosto de 2006
Ultima resposta 18 de ago. de 2006
Respostas 9
Participantes 4