Exception no Struts

8 respostas
R

Olá pessoal, preciso jogar os dados do meu array em um select na minha JSP mas ocorre a seguinte Exception...

javax.servlet.ServletException: No getter method available for property
sCodOperacao for bean under name listaOperacoes

ja troquei os metodos get e set mas não adiantou... Alguem sabe oque pode ser?Obrigado

trecho struts-config:
<!-- Action responsavel por jogar codOperacao na sessão  -->
         <action       
            attribute="operacaoForm"
            input="/operacao.jsp"
            name="operacaoForm"
            path="/operacoes"
            scope="session"
            type="com.myapp.struts.action.OperacaoAction"
            unknown="false"
            validate="true">
         </action>

trecho Action:

OpeDAO opeDAO  = new OpeDAO();
           
            operacoes  = opeDAO.listaOperacoes(id);
                      
            session.setAttribute("listaOperacoes",operacoes); 
            
            OperacaoForm operacaoForm = new OperacaoForm();
            
            session.setAttribute("operacaoForm",operacaoForm);

trecho do form:

public String getDescricao() {
        return descricao;
    }
    
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    
  public String getsCodOperacao() {
        return sCodOperacao;
    }
    
    public void  setsCodOperacao(String sCodOperacao) {
        this.sCodOperacao = sCodOperacao;
    }

trecho do DAO:

public ArrayList listaOperacoes(int idUsuario) throws SQLException { 
                    
           conn = retornaConn(); 
           
           Statement stmt = conn.createStatement();
                                
           ArrayList operacoes  = new ArrayList();
        
        try {
                 
           ResultSet rs = stmt.executeQuery ("select * from Tab_Operacao where CodUsuario LIKE '%" + idUsuario + "%'");
            
            while (rs.next()) {
               OpeBean ope = new OpeBean();
                           
               ope.setsCodOperacao(rs.getString("CodOperacao"));
               ope.setDescricao(rs.getString("Descricao"));                   
                          
               LabelValueBean thisOption = new LabelValueBean(ope.getDescricao(), ope.getsCodOperacao());
             
                operacoes.add(thisOption);
              
            }  
          rs.close();
      } 
      catch (SQLException e) {
            throw e; 
            
      } 
      finally{               
                 stmt.close();
                 conn.close();
      }                 
      
      return operacoes; 
        
    }

Trecho da JSP:

<html:form action="/operacoes.do">
        
    <p align="center"><b><font face="Century Gothic" color="#FFFFFF"> <font size="2">
         
           Cadastrar nova Operação:  <html:select property="sCodOperacao" name="operacaoForm" size="1"> 
                                       <html:options collection="listaOperacoes" property="sCodOperacao" labelProperty="descricao" /> 
                                     </html:select> 
                            
    </span></font></b></p>
        
    
   </html:form>

8 Respostas

danieldestro

Porque seu método se chama getsCodOperacao e na verdade o Struts está procurando por getSCodOperacao. Com S maiúscula.

R

Olá amigo … obrigado mas fiquei sabendo que é obrigatorio usar uma letra maiuscula depois do get e set e como disse no começo do meu post eu ja tentei mudar para getSCodOperacao e não resolveu… da a mesma exception…

danieldestro

Qual é a mensagem da exception?

R

javax.servlet.ServletException: No getter method available for property
sCodOperacao for bean under name listaOperacoes

como disse ja mudei o nome do get/set

danieldestro

Pq sua classe LabelValueBean não deve ter esta propriedade. Você tá encapsulando o objeto OpeBean que tem aquelas propriedades nesse LabelValueBean.

R

então cara… como sou iniciante não sei exatamente como fazer isso … vc poderia por favor mostrar como eu faço com base no codigo postado acima?

Obrigado!

danieldestro

Me responda, porque você está fazendo isso no método listaOperacoes???

LabelValueBean thisOption = new LabelValueBean(ope.getDescricao(), ope.getsCodOperacao());

Se desconsiderar o trecho acima e fizer isso:

operacoes.add(ope);

Creio que funciona!

R

Realmente… deu certo!!

Uma pessoa tinha dito que um select só poderia ser carregado a partir de um objeto LabelValueBean então tinha feito desse jeito mas agora deu certo!!

Muito obrigado mesmo>>> faz muito tempo que estava com esse problema!!

Valeu!

Rodrigo!! :slight_smile:

Criado 17 de setembro de 2006
Ultima resposta 18 de set. de 2006
Respostas 8
Participantes 2