IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Conserver les valeurs d'éléments Set dans un POJO


Sujet :

Spring Web Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Conserver les valeurs d'éléments Set dans un POJO
    Bonjour,

    J'ai une classe POJO qui a des éléments Set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class Device implements Serializable {
     
        /**
             * 
             */
    	private static final long serialVersionUID = 3522966146250618503L;
     
    	/** identifier field */
        private Integer id;
     
        /** nullable persistent field */
        private String userAgent;
     
        /** nullable persistent field */
        private String manufacturerName;
     
        /** nullable persistent field */
        private String model;
     
        /** persistent field */
        private Set j2meToDevices;
     
        /** persistent field */
        private Set styleToDevices;
     
        /** full constructor */
        public Device(Integer id, String userAgent, String manufacturerName, String model, Set j2meToDevices, Set styleToDevices) {
            this.id = id;
            this.userAgent = userAgent;
            this.manufacturerName = manufacturerName;
            this.model = model;
            this.j2meToDevices = j2meToDevices;
            this.styleToDevices = styleToDevices;
         }
     
        /** default constructor */
        public Device() {
        }
     
        public void init() {
        	this.id = new Integer(0);
        	this.userAgent = "";
        	this.manufacturerName = "";
            this.model = "";
            this.j2meToDevices = d.getJ2meToDevices();
            this.styleToDevices = d.getStyleToDevices();
        }
        // getter-setter ...
    }
    L'id correspond à un champs auto_increment dans ma BDD

    J'ai un formulaire dont les champs correspondent à cette classe.
    Pour les Set il s'agit de multiple select.
    Si je fais une erreur dans mon formulaire(par ex : oublier un champs obligatoire), le validator me retourne le formulaire avec les données des champs du device(userAgent, manufactuerName) mais tous les éléments multiple select qui correspondent aux Set sont vidés.

    Ma classe controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class DeviceAddFormController extends SimpleFormController {
    	private MetaDao metaDao;
    	private DeviceDao deviceDao;
    	private Set j2meSet = new HashSet();
    	private Set styleSet = new HashSet();
     
    	public Set getJ2meSet() {
    		return j2meSet;
    	}
     
    	public void setJ2meSet(Set j2meSet) {
    		this.j2meSet = j2meSet;
    	}
     
    	public MetaDao getMetaDao() {
    		return metaDao;
    	}
     
    	public void setMetaDao(MetaDao metaDao) {
    		this.metaDao = metaDao;
    	}
     
    	public DeviceDao getDeviceDao() {
    		return deviceDao;
    	}
     
    	public void setDeviceDao(DeviceDao deviceDao) {
    		this.deviceDao = deviceDao;
    	}
     
    	protected Map referenceData(HttpServletRequest request) throws Exception {
    		Map map = new HashMap();
     
    		map.put("manufacturers", this.metaDao.getManufacturers());
    		map.put("j2mes", this.metaDao.getJ2mes());
    		map.put("styles", this.metaDao.getStyles());
     
    		return map;
    	}
     
    	protected void initBinder(HttpServletRequest request,
    			ServletRequestDataBinder binder) throws Exception {
    		binder.registerCustomEditor(Integer.class, new IntegerCustomEditor());
    	}
     
    	protected ModelAndView onSubmit(HttpServletRequest request,
    			HttpServletResponse response, Object command,
    			org.springframework.validation.BindException be) throws Exception {
    		DevicesForm devicesForm;
    		devicesForm = (DevicesForm) command;
     
    		Integer deviceId = devicesForm.getDevice().getId();
    		String ua = devicesForm.getDevice().getUserAgent();
     
    		// Verify if the device exist ...
    		if (deviceDao.isDevicePresent(ua)) {
    			Map map = new HashMap();
    			map.put("warning", "global.device.exist");
    			return this.showForm(request, response, be, map);
    		}
    		// ... else get "Set" device informations
    		else {
    			// J2me list
    			String[] stJ2me = request.getParameterValues("j2me");
    			if (stJ2me != null && stJ2me != null && stJ2me.length != 0) {
    				j2meSet.clear();
    				for (int v = 0; v < stJ2me.length; v++) {
    					J2meToDevice jtd = new J2meToDevice(new J2meToDevicePK(
    							deviceId, stJ2me[v]));
    					j2meSet.add(jtd);
    					if (log.isDebugEnabled())
    						log.debug("jtd" + jtd.getComp_id().getJ2meId()
    								+ "**************************  stJ2me[" + v
    								+ "] = " + stJ2me[v]);
    				}
    			}
    			// Style list
    			String[] stStyle = request.getParameterValues("style");
    			if (stStyle != null && stStyle.length != 0) {
    				styleSet.clear();
    				for (int v = 0; v < stStyle.length; v++) {
    					StyleToDevice styletd = new StyleToDevice(
    							new StyleToDevicePK(deviceId, stStyle[v]));
    					styleSet.add(styletd);
    					if (log.isDebugEnabled())
    						log.debug("stStyle[" + v + "] = "
    								+ styletd.getComp_id().getStyleId());
    				}
    			}
     
     
    			devicesForm.getDevice().setJ2meToDevices(j2meSet);
    			devicesForm.getDevice().setStyleToDevices(styleSet);
     
    			// Insert Device informations
    			deviceId = this.deviceDao.store(devicesForm.getDevice());
    		}
     
    		// get the property successView from devicemanager-servlet.xml
    		String action = getSuccessView();
     
    		return new ModelAndView(new RedirectView(action + "?id=" + deviceId));
    	}
    }
    Comment faire pour qu'il me garde les valeurs sélectionnées dans mes multiple select si le formulaire est réaffiché pour des erreurs(ex: champs obligatoire incomplet)

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    je ne suis pas un super expert de Spring MVC, mais je chercherai ce qui se dit sur le "backing object"

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 22h18
  2. Récupérer dans Flash les valeurs d'éléments d'un formulaire
    Par Mafate dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 15/10/2008, 15h57
  3. conserver les valeurs entrées dans un formulaire
    Par mitmit dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2007, 11h09
  4. Réponses: 9
    Dernier message: 05/11/2005, 15h59
  5. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 01h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo