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.
