Pb multibox : EXCEPTION "javax.servlet.ServletException: BeanUtils.populate"
Bonjour,
j'essaie de récupérer la liste d'objet retourné par ma multibox:
Mais ca me sort l exeption suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
exception
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:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
java.lang.IllegalArgumentException: argument type mismatch
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
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:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803) |
Ma jsp est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page import="appHIB.Roles" %>
<html:html>
<head>
<title>Page de saisie d'un user</title>
</head>
<body bgcolor="#ffffff">
<!--
Ici c'est la page ou sera saisis le nom de notre user, ensuite le formulaire sera donnée a userSaisirBean(réalisé par le controleur) qui
controlera celui-ci avant de le donner a l'action pour le traitement métier et l'acces aux bases de données.
-->
<html:form action="/create" name="frmAjouterUser" type="app.UserAjouterBean">
<CENTER>
<h2>Saisir les informations de votre User</h2>
<table >
<br/>
<TR><TD><h5>Login :</h5></TD><TD><html:text property="logUser" size="50"/><html:errors property="logUser"/></TD></TR>
<TR><TD><h5>Nom :</h5></TD><TD><html:text property="nameUser" size="50"/><html:errors property="nameUser"/></TD></TR>
<TR><TD><h5>Email :</h5></TD><TD><html:text property="emailUser" size="50"/><html:errors property="emailUser"/></TD></TR>
<TR><TD><h5>Liste Roles:</h5></TD><TD>
<logic:iterate name="UserAjouterBean" property="listderoles" id="id" >
<html:multibox property="listroles" >
<bean:write name="id" />
</html:multibox>
<bean:write name="id" property="name"/><br/>
</logic:iterate></TD></TR>
</table>
<html:submit value="Valider"/>
<html:reset value="Reset"/>
</CENTER>
</html:form>
</body>
</html:html> |
Ma bean est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| package app;
import java.util.Collection;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionMapping;
import appHIB.Roles;
import javax.servlet.http.*;
/** ici on definit le bean qui va recevoir les donnees saisies
* dans le formulaire frmSaisiruser de la page saisieuser.jsp
*/
@SuppressWarnings("serial")
public class UserAjouterBean
extends ActionForm {
/**
* Parametre du bean
*/
private String logUser = null;
public String getLogUser() {
return logUser;
}
public void setLogUser(String logUser) {
this.logUser = logUser;
}
/*** name ******************/
private String nameUser = null;
public String getNameUser() {
return nameUser;
}
public void setNameUser(String nameUser) {
this.nameUser = nameUser;
}
/*** email ******************/
private String EmailUser = null;
public String getEmailUser() {
return EmailUser;
}
public void setEmailUser(String EmailUser) {
this.EmailUser = EmailUser;
}
/*** Roles ******************/
private String RolesUser = null;
public String getRolesUser() {
return RolesUser;
}
public void setRolesUser(String RolesUser) {
this.RolesUser = RolesUser;
}
/******************* List Roles **********************************/
private Collection<Roles> listroles=null;
public Collection<Roles> getListroles() {
return listroles;
}
public void setListroles(Collection<Roles> list) {
this.listroles = list;
}
private Collection<Roles> listderoles=null;
public Collection<Roles> getListderoles() {
return listderoles;
}
public void setListderoles(Collection<Roles> list) {
this.listderoles = list;
}
private Long id=null;
public Long getId() {
// TODO Auto-generated method stub
return id;
}
public void setId(Long long1) {
// TODO Auto-generated method stub
this.id=long1;
}
/**
* Partie de controle des donnees saisies
* @param actionMapping
* @param httpServletRequest
* @return
*/
public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
/**
* Creation ici de la liste d'erreur
*/
ActionErrors erreurs = new ActionErrors();
/**Les choses serieuse commencent, je vais controler mon formuliare
* Ici en l'occurrence mon nomuser ne doit pas être vide
* Le controleur appelle cette methode apres aoir chargé les données(ici une seule)
* mais peu importe le nombre
*/System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
if (logUser.length() == 0) {
/**
* Si le champ nom de l'user est vide je retourne une erreur
* avec erreur.add("clé,ActionError)
*/
erreurs.add("logUser", new ActionError("Objet.nom.vide"));
}
/**
* ici on retourne la liste des erreurs, si celle-ci est vide le controleur pourra executer
* la methode execute de notre Action (userSaisirAction)
*/
return erreurs;
}
} |
Ma class action :
est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package app;
/***
* Cette classe va faire appel soit aux classes métier, aux classes de données.
* Elle retournera ensuite les données a la page
*/
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import service.Service;
import appHIB.User;
public class UserAjouterAction extends Action {
@SuppressWarnings("unchecked")
public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
System.out.println("Action2");
String cible=new String("succes");
UserAjouterBean Formulaire = (UserAjouterBean) actionForm;
//ici mon formulaire est correct, je vais pouvoir interroger les données
User user;
Service service= new Service();
user =(User) service.ajouterActionU(Formulaire);
if(user==null) {
cible="pastrouve";
}
else{
httpServletRequest.setAttribute("beanData",user);
}
return actionMapping.findForward(cible);
}
} |
Merci d'avance