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 1 Java Discussion :

Paramétrage de struts.xml


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut Paramétrage de struts.xml
    Bonjour,

    J'ai un petit problème pour mapper une fonction de struts.xml vers l'Action.java.

    Lorsque je clique sur supprimer, le fichier javascript est bien lu puisque le message "supprimerClient id : 2" s'affiche dans la console.
    Par contre, je ne vois jamais les logs (dans le fichier des logs ...) que j'ai placé dans le clientsAction.java (ce logger fonctionne bien puisque je vois tous les logs des autres fonctions).
    Pourtant, tout fonctionne bien pour d'autres méthodes de clientsAction.java.

    Une piste : la fonction clientsAction.supprimer(int idClient) est la seule de mon fichier clientsAction.java à prendre l'idClient en paramètre. Est-ce que je devrais déclarer ce paramètre dans le struts.xml ?

    Quelqu'un voit-il mon erreur ?
    Merci beaucoup,

    voici mon code dans le javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $scope.supprimerClient = function(idClient){
    	   console.log("supprimerClient id : " + idClient);
       $http.post('../gestClients/supprimer', {
       "clientId":idClient
       }).then(function successCallback(response) {	  
    	   		console.log("succes suppression client");
       		var index = $scope.clients.indexOf(idClient);
       		$scope.clients.splice(index, 1);
      }, function errorCallback(response) {
    	  	console.log("problème suppression client");
    		  });
       };
    voici mon code dans struts.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <action name="gestClients/supprimer" class="com.chezyen.commandes.actions.ClientsAction" method="suppression">
    	<result name="success" type="json">
    		<param name="includeProperties">
    			^client\.idClient$,
    			^client\.nom$,
    			^client\.prenom$,
    			^client\.adresse\.numVoie$,
    			^client\.adresse\.typeVoie$,
    			^client\.adresse\.nomVoie$,
    			^client\.adresse\.codePostal$,
    			^client\.adresse\.ville$
    		</param>
    	</result>
    </action>
    voici mon code dans ClientsAction.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String suppression(int idClient){
    		log.info("ClientsAction - suppression - idClient : " + idClient);
    		Client client = new Client();
    		client = getClientDAO().remove(idClient);
    		return SUCCESS;
    	}
    Voici un apperçu de la console du navigateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    supprimerClient id : 1
    gestion_clients.js:36 succes suppression client
    voi un apperçu du fichier des logs (j'ai cliqué sur le bouton de suppression mais on ne vois pas les logs de la méthode de suppression) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    2016-03-19 23:56:54,752 INFO c.c.c.a.IndexAction [http-apr-8080-exec-10] Appel de index
    2016-03-19 23:56:55,034 INFO c.c.c.a.ClientsAction [http-apr-8080-exec-3] ClientsAction - repertoire
    2016-03-19 23:56:55,040 INFO c.c.c.d.GenericDAO [http-apr-8080-exec-3] GenericDAO : findAll - from Client
    La totalité de mon code est sur github :
    https://github.com/franckyy/commandes_CY.git

    Merci,
    OS : LinuxMint 20

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut récupération d'un attribut dans l'action ?
    Bonjour,

    J'ai avancé dans la compréhension de mon problème :
    J'ai supprimé l'attribut dans la fonction suppression de la classe clientAction.java et j'ai vu dans les logs que cette fonction était maintenant appelée.

    Donc, à partir de cette constatation, je me demande si :
    1 - il faut ajouter un attribut dans le struts.xml (j'ai essayé mais je n'y suis pas parvenu)
    2 - il faut retirer l'attribut de la fonction clientAction.suppression() en ajoutant l'attribut à la classe clientAction.java.

    Pour l'instant, j'ai opté pour la deuxième méthode.

    Mais je me heurte à un nouveau problème, l'attribut que je récupère est toujours égal à zéro....

    Quelqu'un aurait-il une suggestion pour résoudre mon problème ?

    Voici la nouvelle fonction suppression de clientAction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String suppression(){
    		log.info("ClientsAction - suppression - clientId : " + clientId);
    		Client client = new Client();
    		client = getClientDAO().remove(clientId);
    		return SUCCESS;
    	}
    La classe clientAction dans la quelle j'ai rajouté l'attribut :
    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
    package com.chezyen.commandes.actions;
     
    import java.util.List;
    import java.util.Set;
     
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
     
    import com.chezyen.commandes.dao.IClientDAO;
    import com.chezyen.commandes.metier.Adresse;
    import com.chezyen.commandes.metier.Client;
    import com.chezyen.commandes.metier.Commande;
    import com.opensymphony.xwork2.ActionSupport;
     
    public class ClientsAction extends ActionSupport {
     
    	private static final long serialVersionUID = 1L;
     
    	private static Logger log = LogManager.getLogger(ClientsAction.class);
     
    	private IClientDAO clientDAO;
    	public void setClientDAO(IClientDAO clientDAO) {this.clientDAO = clientDAO;}
    	public IClientDAO getClientDAO() {return clientDAO;}
     
    	private int clientID;
    	private String clientNom;
    	private String clientPrenom;
    	private int clientCodePostal;
    	private String clientNomVoie;
    	private String clientTypeVoie;
    	private String clientNumeroVoie;
    	private String clientVille;
    	private Set<Commande> commandes;
     
    	public int getClientID() {return clientID;}
    	public void setClientID(int clientID) {this.clientID = clientID;}
    	public String getClientNom() {return clientNom;}
    	public void setClientNom(String clientNom) {this.clientNom = clientNom;}
    	public String getClientPrenom() {return clientPrenom;}
    	public void setClientPrenom(String clientPrenom) {this.clientPrenom = clientPrenom;}
    	public int getClientCodePostal() {return clientCodePostal;}
    	public void setClientCodePostal(int clientCodePostal) {this.clientCodePostal = clientCodePostal;}
    	public String getClientNomVoie() {return clientNomVoie;}
    	public void setClientNomVoie(String clientNomVoie) {this.clientNomVoie = clientNomVoie;}
    	public String getClientTypeVoie() {return clientTypeVoie;}
    	public void setClientTypeVoie(String clientTypeVoie) {this.clientTypeVoie = clientTypeVoie;}
    	public String getClientNumeroVoie() {return clientNumeroVoie;}
    	public void setClientNumeroVoie(String clientNumeroVoie) {this.clientNumeroVoie = clientNumeroVoie;}
    	public String getClientVille() {return clientVille;}
    	public void setClientVille(String clientVille) {this.clientVille = clientVille;}
    	public Set<Commande> getCommandes() {return commandes;}
    	public void setCommandes(Set<Commande> commandes) {this.commandes = commandes;}
     
    	private Client client;
    	public Client getClient() {return client;}
     
    	private List<Client> clients;
    	public List<Client> getClients() {return clients;}
     
    	private int clientId;
    	public int getClientId() {return clientId;}
    	public void setclientId(int clientId) {this.clientId = clientId;}	
     
    	public String repertoire() {		log.info("ClientsAction - ");
    		this.clients = clientDAO.findAll();
    		return SUCCESS;
    	}
     
    	public String nouveauClient() {
    		log.info("ClientsAction - nouveauClient - prénom : " + getClientNom());
    		Adresse adresse = new Adresse(getClientNomVoie(), getClientTypeVoie(), getClientNumeroVoie(), getClientCodePostal(), getClientVille());
    		log.info("numero adresse : " + getClientNumeroVoie());
    		Client client = new Client(getClientNom(), getClientPrenom(), adresse, null);
    		this.client = getClientDAO().save(client);
    		return SUCCESS;
    	}
     
    	public String suppression(){
    		log.info("ClientsAction - suppression - clientId : " + clientId);
    		Client client = new Client();
    		client = getClientDAO().remove(clientId);
    		return SUCCESS;
    	}
    }
    Une partie du struts.xml qui n'a pas été modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <action name="gestClients/supprimer" class="com.chezyen.commandes.actions.ClientsAction" method="suppression">
    	<result name="success" type="json">
    		<param name="includeProperties">
    			^client\.idClient$,
    			^client\.nom$,
    			^client\.prenom$,
    			^client\.adresse\.numVoie$,
    			^client\.adresse\.typeVoie$,
    			^client\.adresse\.nomVoie$,
    			^client\.adresse\.codePostal$,
    			^client\.adresse\.ville$
    		</param>
    	</result>
    </action>
    la partie du fichier javascript qui concerne la suppression d'un client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $scope.supprimerClient = function(idClient){
    	   console.log("supprimerClient id : " + idClient);
       $http.post('../gestClients/supprimer', {
       "clientId":idClient
       }).then(function successCallback(response) {	  
    	   	console.log("succes suppression client");
       		var index = $scope.clients.indexOf(idClient);
       		$scope.clients.splice(index, 1);
       }, function errorCallback(response) {
    	  	console.log("problème suppression client");
    	   });
       };
    la console du navigateur où l'on l'attribut clientId égal à 16 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    supprimerClient id : 16
    gestion_clients.js:36 succes suppression client
    le fichier des logs où pon peut voir l'attribut clientId égal à zéro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    2016-03-20 12:32:58,059 INFO c.c.c.d.GenericDAO [localhost-startStop-9] Création GenericDAO
    2016-03-20 12:32:58,097 INFO c.c.c.d.GenericDAO [localhost-startStop-9] Création GenericDAO
    2016-03-20 12:33:00,374 INFO c.c.c.a.IndexAction [http-apr-8080-exec-62] Appel de index
    2016-03-20 12:33:00,967 INFO c.c.c.a.ClientsAction [http-apr-8080-exec-69] ClientsAction - 
    2016-03-20 12:33:01,006 INFO c.c.c.d.GenericDAO [http-apr-8080-exec-69] GenericDAO : findAll - from Client
    2016-03-20 12:33:05,079 INFO c.c.c.a.ClientsAction [http-apr-8080-exec-67] ClientsAction - suppression - clientId : 0
    2016-03-20 12:33:05,085 INFO c.c.c.d.GenericDAO [http-apr-8080-exec-67] GenericDAO : remove
    Merci de bien vouloir m'aider,
    OS : LinuxMint 20

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut Résolution
    Bonjour,

    Je viens de résoudre mon problème :
    Tout d'abord, il fallait des balises interceptor-ref dans le struts.xml.
    Ensuite, j'ai décidé de recharger entièrement la liste des clients pour rafraîchir la table dans la vue.
    donc, au final, voici ce que j'obtiens :
    ClientsAction.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public String suppression(){
    	log.info("ClientsAction - suppression - clientID : " + getClientID() + ", nom : " + getClientNom());
    	Client client = new Client();
    	client = getClientDAO().remove(getClientID());
    	this.clients = clientDAO.findAll();
    	return SUCCESS;
    }
    struts.xml
    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
    <action name="gestClients/supprimer" class="com.chezyen.commandes.actions.ClientsAction" method="suppression">
    	<interceptor-ref name="defaultStack"/>
    	<interceptor-ref name="json"/>
    	<result name="success" type="json">
    		<param name="includeProperties">
    			^clients\[\d\]\.idClient$,
    			^clients\[\d\]\.nom$,
    			^clients\[\d\]\.prenom$,
    			^clients\[\d\]\.adresse\.codePostal$,
    			^clients\[\d\]\.adresse\.ville$,
    			^clients\[\d\]\.adresse\.numeroVoie$,
    			^clients\[\d\]\.adresse\.typeVoie$,
    			^clients\[\d\]\.adresse\.nomVoie$
    		</param>
    	</result>
    </action>
    la partie du fichier javascript qui concerne la suppression d'un client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $scope.supprimer_client = function(idClient){
    	   console.log("supprimerClient id : " + idClient);
       $http.post('../gestClients/supprimer', {
       "clientID":idClient
       }).then(function successCallback(response) {	  
    	   	console.log("succes suppression client");
    	    $scope.clients = response.data.clients;
       }, function errorCallback(response) {
    	  	console.log("problème suppression client");
    	   });
       };
    OS : LinuxMint 20

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

Discussions similaires

  1. struts.xml initialiser hashmap
    Par worldchampion57 dans le forum Struts 2
    Réponses: 2
    Dernier message: 14/01/2008, 21h25
  2. Interceptors : struts.xml et bibliothèques
    Par tiboudchou dans le forum Struts 2
    Réponses: 5
    Dernier message: 13/09/2007, 10h09
  3. Réponses: 1
    Dernier message: 10/08/2007, 13h43
  4. paramétrage des fichiers xml
    Par rc_29 dans le forum ANT
    Réponses: 5
    Dernier message: 31/05/2007, 21h11
  5. [debutant][struts] xml.build
    Par riven dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 17/09/2003, 06h53

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