Duvida Struts

3 respostas
raguiar

Boa noite,

Estou com a seguinte dificuldade com o Struts:

Na minha pagina JSP, tenho o seguinte seguinte codigo:

<html:form action="incCotistas.do?method=insert" method="POST" onsubmit="return ValidaForm(this);">
<html:select name="cotForm" property="cot.cluCot" multiple="true" styleClass="cssInput" style="width: 260px;height:70px;" size="5">
<html:optionsCollection name="cotForm" property="cot.cluCot" value="clube.codClube" label="clube.nome"/>
</html:select>

Qdo executo este JSP, e adiciono algum item neste campo “select” ( tenho um JavaScript para inserir dados neste campo ), e executo o submit da pagina, recebo o seguinte erro:

javax.servlet.ServletException: BeanUtils.populate

org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)

org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

root cause

java.lang.IllegalArgumentException: argument type mismatch

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:324)

org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:1789)

org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.java:1684)

org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:1713)

org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)

org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)

org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)

org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

Segue o codigo do minha classe Action :

package web;

import org.apache.struts.action.*;
import org.apache.struts.actions.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bancoDados.ClubeBroker;

import modelo.Cotista;

public final class CotistaAction extends DispatchAction {
    ClubeBroker clBroker = new ClubeBroker();
    
    public Cotista getObjCotista(ActionForm form,HttpServletRequest req) {
         System.out.println("Entrou getObjCotista()");
         CotistaForm cot = (CotistaForm)req.getAttribute("cotForm");
         return cot.getCot();
    }

    public ActionForm getObjForm(Cotista p_cot) {
         CotistaForm ct = new CotistaForm();
         ct.setCot(p_cot);
         return ct;
    }


    public ActionForward insert(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest req,HttpServletResponse res) throws Exception {

	 HttpSession sessao;
         String dest = "";

         Cotista cot = getObjCotista(form,req);

	 sessao = req.getSession(true);
         req.removeAttribute("cotForm");

         if (sessao.getAttribute("p_cod") == null) {
            try {
               clBroker.insertCotista(cot);
            } catch (Exception ex) {System.out.println("Erro na inclusao: " + ex.getMessage());}
            dest = "incCotista";
         }
         else {
            try {
               cot.setId(Long.parseLong((String)sessao.getAttribute("p_cod")));
               clBroker.updateCotista(cot);
            } catch (Exception ex) {System.out.println("Erro na alteracao: " + ex.getMessage());}

            sessao.setAttribute("p_cod",null);
            dest = "listaCotCreated";
         }

         return mapping.findForward(dest);
    }

}

Segue o codigo da classe ActionForm :

package web;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
import modelo.Cotista;

public class CotistaForm extends ActionForm
{
   private Cotista cot = new Cotista();

   public void setCot(Cotista p_cot) {
       this.cot = p_cot;
   }

   public Cotista getCot() {
       return this.cot;
   }

   public void reset(ActionMapping mapping, HttpServletRequest request) {
       this.cot = new Cotista();
   }
}

Segue a classe do modelo ( Cotista.java ) :

package modelo;

import java.util.ArrayList;
import java.util.List;

public class Cotista {

	private String nome;
        private List cluCot = new ArrayList();

	public Cotista() {

	}

        public List getCluCot() {
		return cluCot;
	}


	public String getNome() {
		return nome;
	}


	public void setCluCot(List cluCot) {
		this.cluCot = cluCot;
	}

	public void addCluCot(ClubeCotista cluCot) {
		this.cluCot.add(cluCot);
	}


	public void setNome(String string) {
		nome = string;
	}

 } // end Cotista

Já olhei a documentação do Struts, já pesquisei no google, porém não consegui ter idéia do que pode ser.

Obs.: Se no JSP eu retirar o campo select e deixar somente os outros campos, funciona perfeitamente.

Se alguém tiver alguma sugestão, agradeço.

3 Respostas

D

Animalzinho no struts não existe a tag <html:optionsCollection, o certo é <html:options labelProperty= “xxx” property=“yyy” collection=“sua colecao”>

raguiar

Sua idiotice esta ultrapassando barreiras. O que vc faz em um fórum sério como esse ??? Aliás o que vc faz da vida ??? Pq densenvolvedor duvido que vc seja.

Mas só para vc comprovar o tamanho da idiotice que vc está falando,
segue o link da documentação do struts que fala sobre essa documentação:

http://struts.apache.org/userGuide/struts-html.html#options

Obs.: Para interpretar a documentação, vc precisará saber ler.

L

Ae galera, vamos acalmar os ânimos…

Tinha pensado em escrever logo que vi o Post do dsrmf.

Caso o “Animalzinho” estivesse sendo usado de forma amigável, temos que cuidar com o que escrevemos, para não criar este tipo de situação.

Além do mais, o forum serve para tirarmos dúvidas, nos comunicarmos, realizar a troca de informações e não para criar discussões inúteis que não levam a nada.

De nada adianta reclamar depois, se os moderadores venham a realizar algum tipo de censura.

Então, ducha fria e respeito com todos. :wink:

Criado 20 de julho de 2004
Ultima resposta 21 de jul. de 2004
Respostas 3
Participantes 3