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

Struts 2 Java Discussion :

Conversion et select ?


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut Conversion et select ?
    Bonjour,

    je suis en train d'essayer de faire fonctionner un converter avec Struts2.
    J'ai un bean Civility avec entres autres les attributs id et shortLabel. J'ai aussi une classe User avec un attribut de type civility.

    J'aimerais juste lors de la création d'un User avoir un select avec les Civility.

    Alors j'ai mon converter :

    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
     
    public class CivilityConverter extends StrutsTypeConverter {
     
    	@Autowired
    	private CivilityDao civilityDao;
     
    	@Override
    	public Object convertFromString(Map context,String[] values,Class toClass) {
    		Long civilityId = Long.parseLong(values[0]);
    		return civilityDao.get(civilityId);
    	}
     
    	@Override
    	public String convertToString(Map context, Object o) {
    		Civility civility = (Civility)o;
    		return civility.getId().toString();
    	}
     
    }
    Mes tentatives de select pour une modification d'utilisateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:select key="civility" name="user.civility" list="allCivilities"/>
    Celui-là fonctionne préselectionne bien la bonne Civility mais la value donne "<option value="fr.lmline.model.Civility@20">1</option>" et donc l'enregistrement ne fonctionne pas, et en plus logiquement j'ai les id à l'affichage.

    Pour l'affichage j'ajoute listValue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:select key="civility" name="user.civility" list="allCivilities" listValue="shortLabel" />
    Là l'affichage est bon mais la value toujours pas "<option value="fr.lmline.model.Civility@20">Mlle</option>
    ", logique

    Pour les value j'ajoute listKey :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:select key="civility" name="user.civility" list="allCivilities" listKey="id" listValue="shortLabel" />
    Là tout fonctionne sauf qu'en modification avec un utilisateur déjà créé la valeur n'est pas présélectionnée (c'est la première valeur de la liste) !?

    Quelqu'un saurait-il comment faire fonctionner ça "intégralement" ?

    Merci de votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Dans le tag s:select, ajoute le paramètre value avec user.civility en valeur si user.civility te retourne la civilité récupérée en base.

  3. #3
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Merci pour l'aide mais ça marche pô, et le "préremplissage" fonctionnait sans value avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:select key="civility" name="user.civility" list="allCivilities"/>
    De toutes façons value est plus fait pour les valeurs "par défaut" il me semble.

    Apparemment dès que je définis listValue, je ne passe plus par le Converter, est-ce normal ?

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Montre le code de ton action qui appelle le converter.

  5. #5
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    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
     
    @Secured(roles={Role.ADMIN})
    public class AdminUpdateUserSupport extends PersoSupport {
     
    	private static final long serialVersionUID = 1L;
     
    	@Autowired
    	private UserDao userDao;
    	@Autowired
    	private CivilityDao civilityDao;
    	@Autowired
    	private EncryptionService encryptionService;
     
    	private Long userId;
    	private User user;
    	private String password;
    	private String roleCode;
     
    	public String execute() throws Exception {
    		if(user.getId() == null) {
    			addActionMessage(getText("user.created",new String[]{user.getDisplayName()}));
    		} else {
    			addActionMessage(getText("user.updated",new String[]{user.getDisplayName()}));
    		}
    		user.setPassword(encryptionService.encrypt(password));
    		user.setRole(User.Role.valueOf(roleCode));
    		userDao.saveOrUpdate(user);
    		userId = user.getId();
    		return SUCCESS;
    	}
     
    	public String input() throws Exception {
    		if(userId == null) {
    			this.user = new User();
    			this.roleCode = User.Role.values()[0].toString();
    		} else {
    			this.user = userDao.get(userId);
    			this.roleCode = this.user.getRole().toString();
    		}
    		return SUCCESS;
        }
     
    	/** fields **/
     
    	public Long getUserId() {
    		return userId;
    	}
     
    	public void setUserId(Long userId) {
    		this.userId = userId;
    	}
     
    	public User getUser() {
    		return user;
    	}
     
    	public void setUser(User user) {
    		this.user = user;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	public String getRoleCode() {
    		return roleCode;
    	}
     
    	public void setRoleCode(String roleCode) {
    		this.roleCode = roleCode;
    	}
     
    	/** end fields **/
     
    	/** lists **/
    	public List<Civility> getAllCivilities() {
    		return civilityDao.findAll();
    	}
     
    	public Map<String,String> getAllUserRoles() {
    		Map<String,String> roles = new TreeMap<String,String>();
    		for(Role r:User.Role.values()) {
    			roles.put(r.toString(),getText("usertype."+r.toString().toLowerCase()));
    		}
    		return roles;
    	}
    	/** end lists **/
    }
    (l'attribut roleCode sera remplacé par un converter;PersoSupport extends ActionSupport)

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Pour utiliser les conversions, il faut que le framework soit au courant en indiquant si tu les utilises localement à une action (via les annotations c'est plus simple) ou globalement via le fichier xwork-conversion.properties.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion SELECT sql - pl/sql
    Par rockley dans le forum PL/SQL
    Réponses: 10
    Dernier message: 24/02/2012, 16h01
  2. Conversion d'un SELECT en ORACLE
    Par TotorLeCastor dans le forum Oracle
    Réponses: 4
    Dernier message: 24/05/2011, 14h00
  3. sub select et conversion à la volée
    Par phamdac dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/03/2009, 10h17
  4. Conversion d'un résultat de SELECT au format XML
    Par md1391 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 28/08/2008, 09h45
  5. Erreur lors de la conversion d'une requête SELECT en DELETE
    Par SamLeChiseuji dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/07/2007, 15h09

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